SDB:Systemd

Saltar a: navegación, buscar

Comandos Básicos de systemd

  • systemctl: controla el sistema systemd y maneja los servicios.
  • systemd-cgls: muestra recursivamente el contenido de los grupos de control.
  • systemadm: una interfaz gráfica (GTK) para systemd.

Puede utilizar todos los comandos siguientes systemctl con el valor -H <user>@<host> para controlar una instancia de systemd en una máquina remota, sin embargo debido a la sintaxis de D-Bus solo se puede usar -H host.

Analizando el estado del sistema

Lista de unidades activas:

systemctl

o bien:

systemctl list-units

Lista de unidades que han tenido problemas:

systemctl --failed

Los archivos disponibles de la unidad se pueden ver en /usr/lib/systemd/system/ y /etc/systemd/system/ (este último tiene prioridad). Puede ver la lista de los archivos de unidad instalados con:

systemctl list-unit-files

Para ver si una unidad esta activada:

systemctl is-enabled nombre_del_servicio.service

Inicio y detención de servicios

Estas tareas se realizan con el comando systemctl, el cual recibe dos parámetros, el primero puede ser uno de start, stop, reload, restart, try-restart, reload-or-restart, reload-or-try-restart o status, el segundo es la unidad que estemos tratando de modificar

Ejemplo:

celebi:~ # systemctl start sshd.service
celebi:~ # systemctl status sshd.service
sshd.service - OpenSSH Daemon Loaded: loaded (/lib/systemd/system/sshd.service; enabled) Active: active (running) since Wed, 12 Sep 2012 09:46:53 -0300; 2 days ago Process: 1379 ExecStartPre=/usr/sbin/sshd-gen-keys-start (code=exited, status=0/SUCCESS) Main PID: 1393 (sshd) CGroup: name=systemd:/system/sshd.service └ 1393 /usr/sbin/sshd -D Sep 12 09:46:53 celebi sshd[1393]: Server listening on 0.0.0.0 port 22. Sep 12 09:46:53 celebi sshd[1393]: Server listening on :: port 22. celebi:~ # systemctl stop sshd.service celebi:~ # systemctl status sshd.service sshd.service - OpenSSH Daemon Loaded: loaded (/lib/systemd/system/sshd.service; enabled) Active: inactive (dead) since Fri, 14 Sep 2012 15:39:28 -0300; 2s ago Process: 4474 ExecStart=/usr/sbin/sshd -D $SSHD_OPTS (code=exited, status=0/SUCCESS) Process: 4470 ExecStartPre=/usr/sbin/sshd-gen-keys-start (code=exited, status=0/SUCCESS) CGroup: name=systemd:/system/sshd.service Sep 14 15:38:46 celebi sshd[4474]: Server listening on 0.0.0.0 port 22. Sep 14 15:38:46 celebi sshd[4474]: Server listening on :: port 22. Sep 14 15:39:28 celebi sshd[4474]: Received signal 15; terminating.

Habilitación y deshabilitación de servicios

Los servicios en systemd tienen tres estados, enabled, disabled y masked. Para habilitar un servicio para que se ejecute en su correspondiente target se utiliza el comando systemctl seguido del parámetro enable y el servicio, por ejemplo:

celebi:~ # systemctl enable sshd.service

Para des habilitar un servicio cambiamos el parámetro enable por disable, ejemplo:

celebi:~ # systemctl disable sshd.service

El estado masked, quiere decir que el servicio no solo esta des habilitado, sino que esta imposibilitado para ejecutarse aun manualmente, el siguiente ejemplo enmascara el servicio sshd:

celebi:~ # systemctl mask sshd.service
ln -s '/dev/null' '/etc/systemd/system/sshd.service'

Se usa el parámetro umask para des enmascararlo:

celebi:~ # systemctl unmask sshd.service
rm '/etc/systemd/system/sshd.service'

Niveles de ejecución

Los que anteriormente se conocían como niveles de ejecución en systemd se les llama target, utilizamos el comando

systemctl list-units --type=target --all

para ver un listado de los target's disponibles, en mi caso:

  UNIT                       LOAD   ACTIVE   SUB        JOB DESCRIPTION
  basic.target               loaded active   active     Basic System
  cryptsetup.target          loaded active   active     Encrypted Volumes
  emergency.target           loaded inactive dead       Emergency Mode
  final.target               loaded inactive dead       Final Step
  getty.target               loaded active   active     Login Prompts
  graphical.target           loaded active   active     Graphical Interface
  local-fs-pre.target        loaded active   active     Local File Systems (Pre)
  local-fs.target            loaded active   active     Local File Systems
  mail-transfer-agent.target loaded inactive dead       Mail Transfer Agent
  multi-user.target          loaded active   active     Multi-User
  network.target             loaded active   active     Network
  nss-lookup.target          loaded active   active     Name Lookups
  remote-fs-pre.target       loaded active   active     Remote File Systems (Pre)
  remote-fs.target           loaded active   active     Remote File Systems
  rescue.target              loaded inactive dead       Rescue Mode
  rpcbind.target             loaded inactive dead       RPC Port Mapper
  shutdown.target            loaded inactive dead       Shutdown
  sockets.target             loaded active   active     Sockets
  sound.target               loaded active   active     Sound Card
  swap.target                loaded active   active     Swap
  sysinit.target             loaded active   active     System Initialization
  syslog.target              loaded active   active     Syslog
  time-sync.target           loaded active   active     System Time Synchronized
  umount.target              loaded inactive dead       Unmount All Filesystems
  
  LOAD   = Reflects whether the unit definition was properly loaded.
  ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
  SUB    = The low-level unit activation state, values depend on unit type.
  JOB    = Pending job for the unit.
  
  24 units listed.

Los esenciales serian, multi-user.target (runlevel 3), graphical.target (runlevel 5), rescue.target (runlevel 1)

para cambiar entre target's se utiliza el comando systemctl seguido del parámetro isolate y el target, por ejemplo:

celebi:~ # systemctl isolate multi-user.target

Esto sólo cambiará el nivel de ejecución actual, y no tendrá ningún efecto sobre el siguiente arranque. Es equivalente a los comandos telinit 3 o telinit 5 en Sysvinit.

Cambiar el nivel de ejecución predeterminado

systemd inicia siempre en default.target, para cambiar que es lo que se inicia se utilizan enlaces simbólicos.

Por ejemplo, para cambiar el nivel de ejecución a multi-user.target

celebi:~ # rm /etc/systemd/system/default.target
celebi:~ # ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

Hay que recordar que systemd no utiliza el archivo /etc/inittab.

Limpieza de temporales

La configuración de los directorios y archivos temporales se encuentra en /etc/tmpfiles.d, directorio que en una instalación limpia se encuentra vacío a la espera de las configuraciones por parte del usuario.

Para que los temporales se borren en cada inicio se debe crear un archivo tmp.conf con el siguiente contenido:

D /tmp 1777 root root 1s
D /var/tmp 1777 root root 1s

Administración de energía

Los siguientes comandos se utilizan para administrar energía, apagado, reinicio, etc

Apagado y reinicio del sistema:

celebi:~ # systemctl reboot

Apagado del sistema:

celebi:~ # systemctl poweroff

Apagado completo del sistema:

celebi:~ # systemctl halt

Suspensión del sistema:

celebi:~ # systemctl suspend

Hibernación del sistema:

celebi:~ # systemctl hibernate