systemctl: Gestión de servicios systemd | Algo de Linux

martes, 2 de mayo de 2017

systemctl: Gestión de servicios systemd

Systemd es el sistema de inicio que incorpora Debian Jessie, y que, por tanto, tenemos en nuestros servidores. Destaco que es el sistema de nuestros servidores porque nuestros clientes tienen montado Ubuntu Trusty, que utiliza Upstart; si bien es cierto, que cuando pasemos los clientes a Xenial, se homogeinizará un poco el tema puesto que Ubuntu Xenial usa también Systemd. Mientras tanto, debemos tener en cuenta este detalle.

En este post vamos a ver cómo gestionamos servicios en systemd mediante la herramienta systemctl, algo que he notado que muchos compañeros no tiene claro.

En systemd, los servicios se nombran siempre con el sufijo .service

La sintaxis de systemctl a la hora de trabajar con servicios es muy sencilla:
# systemctl acción servicio.service

Donde:
  • acción será la operación a realizar con el servicio.
    • start
    • stop
    • restart
    • reload
    • reload-or-restart
    • status
    • enable
    • disable
    • is-active
    • is-enabled
    • is-failed
  • servicio será el nombre del servicio.
De acuerdo con lo anterior, vamos a ver qué operaciones podemos realizar con un servicio, utilizando a modo de ejemplo, el servicio slapd:

Para iniciar por ejemplo el servicio slapd, ejecutaremos:
# systemctl start slapd.service
Si queréis, podéis omitir el sufijo service a la hora de ejecutar el comando:
# systemctl start slapd
Para parar el servicio slapd, ejecutaremos:
# systemctl stop slapd.service
Para reiniciar el servicio slapd, ejecutaremos:
# systemctl restart slapd.service
Si el servicio dispone de la opción reload, ejecutaremos:
# systemctl reload slapd.service
Si no sabemos si el servicio tiene la función reload, podemos usar la acción reload-or-restart que tratará de recargar la configuración, y, si no es posible, reiniciará el servicio para que la nueva configuración sea aplicada:
# systemctl reload-or-restart slapd.service
Para comprobar el estado del servicio slapd, ejecutaremos:
# systemctl status slapd.service
Notaréis que las líneas largas se cortan. Si queréis mostrar la información completa, tan sólo tenéis que utilizar el parámetro -l:
# systemctl status -l slapd.service
Otro ejemplo: Supongamos que queremos comprobar el estado del servicio pdns.service:
# systemctl status -l pdns.service 
● pdns.service - PowerDNS Authoritative Server
   Loaded: loaded (/lib/systemd/system/pdns.service; enabled)
   Active: active (running) since mar 2017-05-02 18:48:13 CEST; 9s ago
  Process: 21937 ExecStop=/usr/bin/pdns_control quit (code=exited, status=0/SUCCESS)
 Main PID: 21943 (pdns_server)
   CGroup: /system.slice/pdns.service
           ├─21943 /usr/sbin/pdns_server --daemon=no
           └─21947 /usr/sbin/pdns_server-instance --daemon=no

may 02 18:48:17 servidor pdns_server[21943]: May 02 18:48:17 Polled security status of version 3.4.1-4+deb8u7.Debian at startup, no known issues reported: OK
may 02 18:48:17 servidor pdns_server[21943]: May 02 18:48:17 Set effective group id to 119
may 02 18:48:17 servidor pdns[21947]: Set effective user id to 111
may 02 18:48:17 servidor pdns[21947]: DNS Proxy launched, local port 32566, remote 127.0.0.1:1553
may 02 18:48:17 servidor pdns[21947]: Creating backend connection for TCP
may 02 18:48:17 servidor pdns[21947]: [LdapBackend] LDAP servers = ldap://127.0.0.1 ldap://172.19.144.3
may 02 18:48:17 servidor pdns_server[21943]: May 02 18:48:17 Set effective user id to 111
may 02 18:48:17 servidor pdns_server[21943]: May 02 18:48:17 DNS Proxy launched, local port 32566, remote 127.0.0.1:1553
may 02 18:48:17 servidor pdns_server[21943]: May 02 18:48:17 Creating backend connection for TCP
may 02 18:48:17 servidor pdns_server[21943]: May 02 18:48:17 [LdapBackend] LDAP servers = ldap://127.0.0.1 ldap://172.19.144.3
Para activar un servicio que se encuentra desactivado, utilizamos la acción enable:
# systemctl enable slapd.service
Para desactivar un servicio, utilizamos la acción disable:
# systemctl disable slapd.service
Para comprobar si un servicio se encuentra activo:
# systemctl is-active slapd.service
Ahora bien, si lo que queremos es comprobar si un servicio se encuentra activado:
# systemctl is-enabled slapd.service
Del mismo modo, podemos comprobar si un servicio está fallando:
# systemctl is-failed slapd.service
Esta comprobación nos devolverá "active" si el servicio está corriendo perfectamente y "failed" si ocurrió algún error. Publicado por primera vez en http://enavas.blogspot.com.es

No hay comentarios: