Systemctl es una utilidad utilizada por systemd para administrar el sistema y el administrador de servicios. Muchas distribuciones modernas de Linux como Ubuntu, Debian, Fedora, Linux Mint, OpenSuSE, Redhat han adoptado systemd como su sistema de inicio predeterminado.
Usando systemctl puede iniciar, detener, recargar, reiniciar el servicio, enumerar unidades, verificar el estado del servicio, habilitar/deshabilitar el servicio, administrar objetivos (niveles de ejecución) y administración de energía.
En este tutorial, le mostraré cómo usar los comandos systemctl para administrar el servicio systemd en Linux.
1. Systemctl Iniciar/Detener/Reiniciar/Recargar servicio
Para iniciar un servicio en Linux, ejecute systemctl seguido del nombre del servicio espacial 'start'.
Ejemplo:
systemctl start dnsmasq
A diferencia del comando de servicio, el comando systemctl start no genera ningún resultado.
Para detener un servicio, use systemctl stop service-name. Por ejemplo:
systemctl stop dnsmasq
Para reiniciar un servicio, use systemctl restart service-name.
Ejemplo:
systemctl restart dnsmasq
Para recargar la configuración del servicio (digamos ssh), sin reiniciarlo, use systemctl reload service-name.
Por ejemplo:
systemctl reload sshd
2. Systemctl comprobar el estado del servicio
Para ver si un servicio se está ejecutando o no, podemos usar la verificación de estado de systemctl.
systemctl status dnsmasq
3. Comprobar y habilitar/deshabilitar el servicio al arrancar
Para habilitar un servicio en el arranque (esto corresponde a 'chkconfig on' en el sistema sysvinit), use systemctl enable service-name.
Ejemplo:
systemctl enable dnsmasq.service
De manera similar, los servicios se pueden deshabilitar al arrancar, ejecute:
systemctl disable dnsmasq.service
Para verificar si un servicio está habilitado en el arranque o no, ejecute:
systemctl is-enabled dnsmasq.service
4. Unidades de lista Systemctl
Para enumerar todas las unidades en ejecución, ejecute el comando systemctl sin ninguna opción. La opción de listar unidades también hace lo mismo.
systemctl
o
systemctl list-units
Las unidades fallidas se pueden enumerar con la opción --failed.
systemctl --failed
Para listar todos los servicios activos, ejecute:
systemctl list-units -t service
6. Comandos de reinicio/apagado de Systemctl
Al igual que el comando de apagado, el comando systemctl para apagar, reiniciar o hibernar el sistema.
El siguiente comando apagará el sistema y la máquina y enviará una notificación a todos los usuarios que hayan iniciado sesión.
systemctl poweroff
El siguiente comando apagará el sistema pero no apagará la máquina. Esto enviará una notificación a todos los usuarios registrados.
systemctl halt
Apague la máquina, pero no enviará ninguna notificación a todos los usuarios que iniciaron sesión.
systemctl --no-wall poweroff
Para mostrar los detalles de apagado, ejecute el siguiente comando.
journalctl -u systemd-shutdownd
7. Systemclt para gestionar sistemas remotos
Por lo general, todos los comandos systemctl anteriores se pueden usar para administrar un host remoto con el comando systemctl en sí. Esto usará ssh para la comunicación con el host remoto. Todo lo que necesita hacer es agregar el usuario y el host al comando systemctl de esta manera:
systemctl status sshd -H [email protected]
8. Gestión de objetivos
Systemd tiene un concepto de objetivos que tienen un propósito similar a los niveles de ejecución en el sistema sysVinit.
Los niveles de ejecución en sysVinit eran en su mayoría numéricos (0,1,2,...). Estos son los niveles de ejecución en sysVinit con sus equivalentes en systemd:
0 runlevel0.target, poweroff.target
1, s, single runlevel1.target, rescue.target
2, 4 runlevel2.target, runlevel4.target, multi-user.target
3 runlevel3.target, multi-user.target
5 runlevel5.target, graphical.target
6 runlevel6.target, reboot.target
emergency emergency.target
Para cambiar el objetivo actual, escriba:
systemctl isolate graphical.target
Si desea ver en qué objetivo se encuentra, debe enumerar todas las unidades correspondientes.
systemctl list-units --type=target
Puede ver "graphical.target" en la lista aquí. Esto es lo que cambiamos nuestro objetivo. Ahora cambiemos el nivel de ejecución nuevamente a multi-user.target y luego analicemos este resultado:
systemctl isolate multi-user.target
systemctl list-units --type=target
Para enumerar el objetivo predeterminado, escriba:
systemctl get-default
El objetivo predeterminado se puede establecer con el comando set-default, escriba:
systemctl set-default graphical.target
Otro comando systemd útil
Iniciar sesión en systemd
El systemd tiene su propio sistema de registro llamado journald. Reemplaza el demonio syslog de sysVinit.
journalctl
Para ver todos los mensajes de inicio, ejecute el comando "journalctl -b".
journalctl -b
El siguiente comando sigue los registros del sistema en tiempo real (similar a tail -f).
journalctl -f
Para verificar los registros específicos de un servicio o ejecutable en particular, use journalctl como:
journalctl /usr/sbin/dnsmasq
Buscar la duración del proceso de arranque
Para encontrar la duración del proceso de arranque de systemd con el siguiente comando:
systemd-analyze
El tiempo systemd-analyze también muestra la misma información.
systemd-analyze time
Para imprimir una lista de todas las unidades en ejecución ordenadas por el tiempo necesario para inicializarse, utilice systemd-analyze Blau.
systemd-analyze blame
Comando Hostnamectl
Para mostrar y cambiar el nombre de host, use el comando hostnamectl.
hostnamectl
Conclusión
En este tutorial, aprendimos los comandos systemctl para administrar el servicio systemd en las distribuciones de Linux. Espero que haya disfrutado de la lectura y deje sus sugerencias en la sección de comentarios a continuación.
Leer también:
- Proceso de arranque de Systemd:una mirada de cerca en Linux
- ¡Colorido! systemd vs sysVinit Linux Cheatsheet