3.2. Gestión de los servicios del sistema
Las versiones anteriores de Red Hat Enterprise Linux, que se distribuían con SysV init o Upstart, utilizaban init scripts ubicado en el directorio /etc/rc.d/init.d/
. Estos scripts de init estaban típicamente escritos en Bash y permitían al administrador del sistema controlar el estado de los servicios y demonios en su sistema. A partir de Red Hat Enterprise Linux 7, estos scripts de init han sido reemplazados por service units.
Las unidades de servicio terminan con la extensión de archivo .service
y tienen un propósito similar al de los scripts de init. Para ver, iniciar, detener, reiniciar, habilitar o deshabilitar los servicios del sistema, utilice el comando systemctl
como se describe en Comparación de la utilidad de servicio con systemctl, Comparación de la utilidad chkconfig con systemctl, y más adelante en esta sección. Los comandos service
y chkconfig
todavía están disponibles en el sistema y funcionan como se espera, pero sólo se incluyen por razones de compatibilidad y deben evitarse.
servicio | systemctl | Descripción |
---|---|---|
|
| Inicia un servicio. |
|
| Detiene un servicio. |
|
| Reinicia un servicio. |
|
| Reinicia un servicio sólo si se está ejecutando. |
|
| Vuelve a cargar la configuración. |
|
| Comprueba si un servicio se está ejecutando. |
|
| Muestra el estado de todos los servicios. |
chkconfig | systemctl | Descripción |
---|---|---|
|
| Activa un servicio. |
|
| Desactiva un servicio. |
|
| Comprueba si un servicio está activado. |
|
| Enumera todos los servicios y comprueba si están activados. |
|
| Enumera los servicios que se ordenan para comenzar antes de la unidad especificada. |
|
| Enumera los servicios que se ordenan para iniciarse después de la unidad especificada. |
Especificación de las unidades de servicio
Para mayor claridad, todos los ejemplos de comandos en el resto de esta sección utilizan nombres completos de unidades con la extensión de archivo .service
, por ejemplo:
# systemctl stop nfs-server.service
Sin embargo, se puede omitir la extensión del archivo, en cuyo caso la utilidad systemctl
asume que el argumento es una unidad de servicio. El siguiente comando es equivalente al anterior:
# systemctl stop nfs-server
Además, algunas unidades tienen nombres de alias. Esos nombres pueden tener nombres más cortos que las unidades, que pueden utilizarse en lugar de los nombres reales de las unidades. Para encontrar todos los alias que se pueden utilizar para una unidad en particular, utilice:
# systemctl show nfs-server.service -p Nombres
Comportamiento de systemctl en un entorno chroot
Si se cambia el directorio raíz utilizando el comando chroot
, la mayoría de los comandos systemctl
se niegan a realizar cualquier acción. La razón de esto es que el proceso systemd
y el usuario que utilizó el comando chroot
no tienen la misma vista del sistema de archivos. Esto sucede, por ejemplo, cuando se invoca systemctl
desde un archivo kickstart
.
La excepción a esto son los comandos de archivos de unidad como los comandos systemctl enable
y systemctl disable
. Estos comandos no necesitan un sistema en ejecución y no afectan a los procesos en ejecución, pero sí afectan a los archivos de unidad. Por lo tanto, puede ejecutar estos comandos incluso en el entorno chroot
. Por ejemplo, para habilitar el servicio httpd
en un sistema bajo el directorio /srv/website1/
:
# chroot /srv/website1 # systemctl enable httpd.service Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service, pointing to /usr/lib/systemd/system/httpd.service.
3.2.1. Servicios de listado
Para listar todas las unidades de servicio cargadas actualmente, escriba lo siguiente en un prompt del shell:
systemctl list-units --type service
Para cada archivo de unidad de servicio, este comando muestra su nombre completo (UNIT
) seguido de una nota sobre si el archivo de unidad ha sido cargado (LOAD
), su estado de activación de archivo de unidad de alto nivel (ACTIVE
) y de bajo nivel (SUB
), y una breve descripción (DESCRIPTION
).
Por defecto, el comando systemctl list-units
sólo muestra las unidades activas. Si desea listar todas las unidades cargadas independientemente de su estado, ejecute este comando con la opción de línea de comandos --all
o -a
:
systemctl list-units --type service --all
También puede listar todas las unidades de servicio disponibles para ver si están habilitadas. Para ello, escriba:
systemctl list-unit-files --type service
Para cada unidad de servicio, este comando muestra su nombre completo (UNIT FILE
) seguido de información sobre si la unidad de servicio está habilitada o no (STATE
). Para obtener información sobre cómo determinar el estado de las unidades de servicio individuales, consulte Visualización del estado del servicio.
Ejemplo 3.1. Servicios de listado
Para listar todas las unidades de servicio cargadas actualmente, ejecute el siguiente comando:
$ systemctl list-units --type service
UNIT LOAD ACTIVE SUB DESCRIPTION
abrt-ccpp.service loaded active exited Install ABRT coredump hook
abrt-oops.service loaded active running ABRT kernel log watcher
abrt-vmcore.service loaded active exited Harvest vmcores for ABRT
abrt-xorg.service loaded active running ABRT Xorg log watcher
abrtd.service loaded active running ABRT Automated Bug Reporting Tool
…
systemd-vconsole-setup.service loaded active exited Setup Virtual Console
tog-pegasus.service loaded active running OpenPegasus CIM Server
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.
46 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'
Para listar todos los archivos de unidades de servicio instalados para determinar si están habilitados, escriba:
$ systemctl list-unit-files --type service UNIT FILE STATE abrt-ccpp.service enabled abrt-oops.service enabled abrt-vmcore.service enabled abrt-xorg.service enabled abrtd.service enabled … wpa_supplicant.service disabled ypbind.service disabled 208 unit files listed.