systemd
nos proporciona el systemctl
conjunto de comandos que se usa principalmente para permitir que los servicios se inicien en el momento del arranque. También podemos iniciar, detener, recargar, reiniciar y verificar el estado de los servicios con la ayuda de systemctl
.
Podemos hacer, por ejemplo sudo systemctl enable service_name
, y service_name
se iniciará automáticamente en el momento del arranque. También podemos desactivar los servicios para que no se inicien en el momento del arranque.
¿Es la única diferencia entre los comandos service
y systemctl
que systemctl
se pueden usar para habilitar el inicio de los servicios en tiempo de ejecución? ¿Podemos usar systemctl
en cualquier servicio? ¿Qué otras diferencias significativas hay?
command-line
services
systemd
luv.preet
fuente
fuente
Respuestas:
El
service
comando es un script de envoltura que permite a los administradores del sistema iniciar, detener y verificar el estado de los servicios sin preocuparse demasiado por el sistema de inicio real que se está utilizando. Antes de la introducción de systemd, era un contenedor de/etc/init.d
secuencias de comandos y de Upstartinitctl
comando, y ahora es un contenedor para estos dos ysystemctl
así.¡Usa la fuente, Luke!
Comprueba el Upstart:
Si eso no funciona, busca systemd:
Y si eso también falla, recurre a los
/etc/init.d
scripts del Sistema V :Dado que el
service
comando es un contenedor bastante simple, solo admite un subconjunto limitado de acciones en comparación con lo que podría proporcionar el sistema de inicio real.Para la portabilidad sobre varias versiones de Ubuntu, los usuarios pueden usar de manera confiable el
service
comando para iniciar, detener, reiniciar o examinar el estado de un servicio. Para las tareas más complejas, sin embargo, el comando real que se utiliza, ya sea queinitctl
osystemctl
o la/etc/init.d
secuencia de comandos podría tener que ser utilizado directamente.Además, al ser un contenedor, el
service
script en algunos casos también hace más de lo que podría hacer el comando equivalente directo. Por ejemplo:/etc/init.d
scripts en un entorno limpio. (Tenga en cuenta la invocación larga deenv
comandos en larun_via_sysvinit
función anterior).restart
en los sistemas Upstart a una combinación destop
/start
, ya que seinitctl restart
generará un error si el servicio no se está ejecutando.Detiene los sockets cuando detiene los servicios systemd que tienen sockets asociados:
Los servicios de inicio se habilitaron directamente en el archivo de configuración del servicio (o se deshabilitaron mediante anulaciones), y los scripts del Sistema V se habilitaron o deshabilitaron con el
update-rc.d
comando (que administraba enlaces simbólicos en los/etc/rc*
directorios), por lo que elservice
comando nunca estuvo involucrado en habilitar o deshabilitar los servicios en el arranque .fuente
Hay mucho más de lo que mencionaste que
systemctl
es capaz de hacer.systemd
funciona con unidades, hay diferentes tipos de unidades: objetivos, servicios, sockets, etc. los objetivos son el mismo concepto que los niveles de ejecución, son un montón de unidades juntas.Puede usar
systemctl
para establecer u obtener el objetivo predeterminado del sistema.Puedes ir a otros objetivos:
Otros objetivos son: multiusuario, gráfico, recue, emergencia, reinicio, apagado.
Como dijiste, puedes usar
systemctl
para administrar servicios, algunos de los otros comandos relacionados con la administración de servicios que conozco son:Puede usarlo para conocer el estado de un servicio:
Puede enmascarar o desenmascarar un servicio:
Cuando oculta un servicio al que estará vinculado
/dev/null
, de manera manual o automática, otros servicios no pueden activarlo / habilitarlo. (deberías desenmascararlo primero).Otro uso de systemctl es enumerar unidades:
Que enumera todo tipo de unidades, cargadas y activas.
Lista de unidades de servicio:
O para enumerar todas las unidades disponibles, no solo las cargadas y activadas:
Puede crear alias o incluso controlar máquinas remotas
Por otro lado,
service
hace lo que tiene que hacer, administrar servicios y no tener nada que ver con los negocios de otras personas;)fuente
service
pueda hacer pero nosystemctl
?service start
fallidos. Pre-systemd,service start
me dejaría ver de inmediato por qué mi servicio no comenzaría. Después del sistema, tengo que mirar cuatro o cinco registros diferentes antes de poder encontrarlo. Dicho todo esto, mi comentario está indudablemente fuera de tema y probablemente será eliminado.service
comando, ¿no era esa parte de la pregunta?