Tal vez esta es una pregunta trivial, pero no está totalmente claro para mí. En uno de nuestros servidores tenemos algunos procesos en segundo plano en ejecución que se iniciaron service
y otros que se iniciaron systemctl
, como este:
$ service nginx start
$ systemctl start gunicorn
¿Cuál es la diferencia entre los dos comandos? ¿Cuál es la forma preferida de tratar con servicios en segundo plano? ¿Cómo configurar el comando preferido?
Respuestas:
service
es un comando de "alto nivel" utilizado para iniciar y detener servicios en diferentes unixes y linuxes. Dependiendo del administrador de servicios de "nivel inferior",service
redirige a diferentes binarios.Por ejemplo, en CentOS 7 redirige a
systemctl
, mientras que en CentOS 6 llama directamente al/etc/init.d
script relativo . Por otro lado, en versiones anteriores de Ubuntu redirige aupstart
service
es adecuado para la gestión de servicios básicos, mientras que las llamadas directassystemctl
ofrecen mayores opciones de control.fuente
systemctl
es básicamente una versión más potente delservice
.Con
service
sólo se puede hacer comandos relacionados con el servicio (es decirstatus
,reload
,restart
) mientras que consystemctl
usted puede utilizar los comandos más avanzados tales como:systemctl is-failed name.service # check if service failed to load
O servicios de enmascaramiento:
systemctl mask name.service
Hay mucha buena información en esta página de Ask Ubuntu.
fuente
systemctl
es la utilidad principal para controlar demonios / serviciossystemd
,mientras que el
service
comando es la utilidad tradicional en elSysVinit
mundo.Una de las características de systemd es ser compatible con los comandos SysVinit / legacy,
por lo que, si tiene el
systemctl
comando,service foo start
será una envolturasystemctl start foo
.La misma historia para
chkconfig
.fuente