Los servicios en Linux se gestionan a través de su archivo de configuración. Si se realizan modificaciones al archivo de configuración de un servicio, es necesario iniciar un reinicio del servicio para aplicar las modificaciones. Al reiniciar el servicio, systemd vuelve a evaluar el archivo de configuración y aplica las modificaciones.
En esta guía, explicaré cómo usar systemctl para reiniciar un servicio en Linux.
Nota: Esta guía incluye comandos e instrucciones que se ejecutan en Ubuntu 22.04. El comando funcionará sin problemas en las distribuciones que vienen con el administrador de servicios systemd.
El comando systemctl restart
El Reanudar El comando esencialmente detiene un servicio y lo inicia nuevamente. Si el servicio o unidad no está operativo, el comando de reinicio iniciará su operación.
El comando de reinicio no elimina los procesos que están vinculados al servicio. Tomemos el ejemplo de los descriptores de archivos, que son identificadores no negativos asignados por el sistema operativo a los archivos abiertos por un servicio. Si reinicia un servicio, el descriptor de archivo vinculado a ese servicio permanecerá allí durante el proceso de reinicio.
Si desea eliminar todos los procesos vinculados al servicio, debe hacerlo explícitamente. detener el servicio y comenzar otra vez.
Cómo reiniciar un servicio
En Linux, puede reiniciar un servicio utilizando el sistema sudoctl herramienta de línea de comando con el Reanudar opción y especificando su nombre. La sintaxis general se proporciona a continuación:
sudo reiniciar systemctl [ Nombre del Servicio ]
Necesitará sudo privilegios para reiniciar un servicio.
Por ejemplo, reiniciemos el ssh servicio.
sudo systemctl reiniciar ssh.servicioPara reiniciar varios servicios, agregue el nombre de cada servicio después del Reanudar comando con un espacio.
sudo systemctl reiniciar ssh.servicio smbd.servicioOtros comandos de reinicio se proporcionan en la siguiente tabla:
intentar reiniciar | Detiene o inicia el servicio o servicios especificados y si el servicio no se está ejecutando, no lo inicia. |
recargar o reiniciar | Vuelva a cargar el servicio o servicios compatibles y, si el servicio no es compatible, reinícielo y actívelo. |
intentar-recargar-o-intentar-reiniciar | Vuelva a cargar el servicio o servicios compatibles y, si el servicio no es compatible, reinícielo sin activarlo. |
En los comandos anteriores, el .servicio la extensión es opcional.
Cómo reiniciar automáticamente un servicio
En Linux, si un servicio falla, entonces el sistemad Lo reinicié de forma predeterminada. No obstante, en muchos casos puede ser necesario modificar la forma en que se reinicia un servicio. Por ejemplo, es posible que se necesite una acción manual durante el proceso de depuración del servicio personalizado.
Los archivos de unidad systemd o archivos de servicio se encuentran en /etc/systemd/sistema o /lib/systemd/sistema dependiendo principalmente de cómo se crea el servicio. Para enumerar los archivos de unidad en Linux, use el siguiente comando:
es / biblioteca / sistemad / sistemaPuede ver los archivos de configuración de diferentes servicios. abramos el servicio ssh archivo usando el nano editor.
sudo nano / biblioteca / sistemad / sistema / servicio sshAquí puedes modificar el Reanudar configuración. De forma predeterminada, está configurado en en caso de falla . Otras opciones para reiniciar un servicio se enumeran a continuación:
- no
- siempre
- en éxito
- en caso de falla
- anormal
- en aborto
- perro guardián
Otra opción en el archivo de servicio de la unidad es ReiniciarSec que se utiliza para especificar el número de segundos después de los cuales se reiniciará el servicio.
[ Servicio ]Reanudar =siempre
ReiniciarSec = 5
Estas instrucciones significan que el servicio se reiniciará al iniciar y, si se interrumpe, se reiniciará después de 5 segundos.
Después de modificar la configuración, ejecute el siguiente comando para aplicar los cambios.
sudo demonio de recarga systemctlOtros ajustes importantes a tener en cuenta son InicioLimitIntervalSec y InicioLimitBurst . Estas opciones son útiles para establecer el tiempo máximo y el número máximo de reintentos para reiniciar un servicio.
[ Unidad ]InicioLimitIntervalSec = 300
InicioLimitBurst = 4
La instrucción anterior indica que systemd dejará automáticamente de intentar reiniciar un servicio si no se inicia después de 300 segundos y 4 reintentos.
Para verificar si el servicio se reinicia después de 5 segundos o no, cierre el servicio usando el PID del servicio y el matar dominio.
sudo matar -9 [ PID ]Después de 5 segundos, se reiniciará el servicio; utilizar el diarioctl comando para verificar el estado del servicio ssh .
diarioctl -en servicio ssh
Cómo reiniciar un servicio cuando se reinicia el servicio dependiente
En Linux, muchos servicios son interdependientes y, de manera similar, deben reiniciarse cuando se reinicia un servicio dependiente.
Hay tres opciones diferentes en el archivo de servicio de la unidad para reiniciar un servicio, con un servicio dependiente reiniciado.
- Parte de
- Se une a
- Requiere
Todas estas opciones realizan la misma tarea.
Tomemos un ejemplo de ssh.service que depende de apparmor.service; un módulo de seguridad de Linux para proporcionar el acceso necesario. Para enumerar las dependencias de un servicio en el uso de Linux sistemactl con dependencias de lista comando y nombre del servicio.
systemctl lista-dependencias ssh.service
Por lo tanto, si desea reiniciar ssh.service cuando reinicia apparmor.service, debe incluir la opción PartOf, BindsTo o Requires junto con el nombre del servicio en la sección [Unidad] del archivo apparmor.service.
Abra el archivo apparmor.service.
sudo nano / biblioteca / sistemad / sistema / apparmor.servicioAgregue la siguiente línea en la sección [Unidad].
Parte de =ssh.servicio
Guarde el archivo y ejecute el comando daemon-reload.
sudo recarga-demonio systemctlAhora, reinicie el servicio ssh y luego comprobar el apparmor.servicio registro.
Notarás el apparmor.servicio reinicia al mismo tiempo el servicio ssh reiniciado.
Conclusión
Para reiniciar un servicio o servicios en Linux, el sistemactl El comando se utiliza con el Reanudar opción. El sistemactl es una utilidad de línea de comandos utilizada para administrar los servicios systemd. El Reanudar La opción inicia un servicio y luego lo detiene, activando un servicio inactivo. Sin embargo, puede reiniciar un servicio sin activarlo utilizando el intentar reiniciar opción.