SDB:Systemd
Contenido
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