Frequently Asked Question

Administrar servicios con systemctl
Last Updated 2 years ago

Administrar servicios con systemctl Introducción a Systemd:

image
El arranque del sistema y los servicios son administrados por Systemd System y Service Manager. Este programa se encarga de gestionar la activación de servicos, la gestión de demonios y otros procesos tanto al inicio del sistema como cuanto este está corriendo.

Un poco de historia:

Por muchos años, el proceso padre ID 1 de Linux y Unix ha sido el proceso Init. Este proceso era el responsible de la activación de otros servicios en el sistema. Frecuentemente los Demonios eran iniciados en el arranque por System V y por los script de Init. Menos freuentes eran los Demonios iniciados bajo demanda por otro servicio, como con Inetd o xinetd. Estos sistemas tienen importantes limitaciones que son eliminadas con Systemd.

Con Systemd, el proceso con ID 1 es systemd, el nuevo sistema init. Unas de las pocas características de Systemd son:
Capacidad de arrancar procesos en paralelo, aumentando la velocidad de arranque del sistema.

Arancado de Demonios bajo demanda sin que se requiera un servicio nuevo.
Administración automática de dependencias de procesos, eliminando tiempos de espera.
Un método de seguimiento de procesos relacionados usando grupos de control.

Systemctl y Systemd units:
El comando Systemctl se usa para la gestión de diferentes tipos de objetos de systemd, llamanos System Units. Podemos ver una lista de los Systemd Units con el comando:

systemctl -t help y systemctl -l

A forma de introducción diremos que tenemos tres tipos distintos de Systemd Units:
1.- Services units.
2.- Sockets units.
3.- Path units.

Estados de un servicio:
Para ver como se encuentra un servicio tenemos el siguiente comando:
systemctl status servico.service
Este comando nos muestra unas keywords que nos sirven para ver como se encuentra el servicio en estos momentos (run time) y en el momento del arranque. Estas keywords son:
loaded El archivo de configuración del servicio ha sido procesado.
Active (running) Servicio corriendo.
Active (exited) El servicio ha sido completado (en el arranque).
Active (waiting) El servicio está corriendo pero esperando a algún evento.
Inactice El servicio no está corriendo.
Enabled El servicio será arrancado en el arranque (aunque ahora pueda esta inactivo).
Disabled El servicio NO será arrancado en el arranque (aunque ahora pueda estar corriendo).
Static No puede ser arrancado en el arranque, aunque puede ser arrancado por otra unidad de forma automática.

Listar Units con Systemctl:
Para ver el estado de todas las units en el arranque del sistema:
systemctl
Para ver los units .service:
systemctl type=services
Para ver los servicios que han fallado:
systemctl failed type=service

Arrancando y parando demonios y services en un sistema corriendo:

Para arrancar y para units .service usamos
systemctl start/stop sshd.service
systemctl status sshd.service
Para reiniciar un services:
systemctl restart sshd.service
Podemos recargar un units .service sin necesidad de pararlo, de esta forma el ID del proceso no cambiará, para ello usamos:
systemctl reload sshd.service
Importante “Masking services”: en ocasiones nos interesa que algunos services no puedan ser arrancados (ejemplo de Iptables si usamos Firewalld), para ello tendremos que mascarar los servicios de tal forma que no arranquen aunque se lo digamos. De esta forma podemos evitar errores de administración. Vemos como hacerlo:
systemctl mask network para deshabilitarlo totalmente!

Systemctl unmask network para volver a habilitarlo.

Iniciando services daemons al arranque del sistema:
systemctl enable/disable sshd.service
Siempre que lancemos un comando con systemctl deberiamos luego de ver el estado del servicio: systemctl status sshd.service

Please Wait!

Please wait... it will take a second!