¿Qué quieres decir con habilitado? ¿Te refieres a los servicios que se están ejecutando?
Gen
77
@Gen habilitar un servicio es bastante diferente de iniciarlo. Ver man systemctl.
Jos
Fascinante. La respuesta con la calificación más baja es la respuesta más "correcta", aunque claramente no es la mejor respuesta. Esta excelente pregunta (y sus respuestas) es un ejemplo interesante de cómo systemd viola los principios de diseño de larga data (y brillantes) de Unix & Co. @FelipeAlvarez se queja de que la respuesta más aceptada asume que systemd sigue la filosofía de diseño de unix, pero systemd / systemctl puede hacer exactamente lo que quiere (los usuarios más experimentados solo considerarán esa hinchazón completa). Empiezo a ver con mayor claridad por qué Linus Torvalds es tan vehementemente crítico con systemd.
BISI
Respuestas:
412
systemctl list-unit-files | grep enabledenumerará todos los habilitados .
Si desea cuáles se están ejecutando actualmente , necesita systemctl | grep running.
Usa el que estás buscando. Habilitado, no significa que se esté ejecutando. Y correr no significa que esté habilitado. Son dos cosas diferentes.
Habilitado significa que el sistema ejecutará el servicio en el próximo arranque. Entonces, si habilita un servicio, aún necesita iniciarlo manualmente, o reiniciar y comenzará.
Ejecutar significa que se está ejecutando en este momento, pero si no está habilitado, no se reiniciará cuando reinicies.
molesto tener que usar una herramienta externa (grep) para mostrar esta información vital. Pero gracias por mostrarnos el camino :)
Felipe Alvarez
34
@FelipeAlvarez Correcto. Pero así es como funciona Linux. Muchos binarios pequeños que funcionan bien entre sí. systemctl hace lo que se le pide, enumera los servicios. No hay un comando de filtrado incorporado en systemctl porque grep ya existe y puede hacerlo bien con la salida de cualquier programa. Así es como siempre ha sido :)
Dorian
3
Estoy de acuerdo y así debería ser. Pero, systemd ya intenta hacer TANTO que me pregunto por qué no puede enumerar los servicios habilitados.
Felipe Alvarez
55
systemctl | grep running¡no me enumeres nada! Incluso si algo se está ejecutando solo se enumera en cuanto a su estado como:enabled, disabled, masked, static
Cirelli94
27
Más simple:systemctl list-unit-files --state=running
Será el
93
man systemctl estados:
--state=
El argumento debe ser una lista separada por comas de unidad LOAD, SUB, o ACTIVEestados. Al enumerar unidades, muestre solo aquellas en los estados especificados. Se usa --state=failedpara mostrar solo unidades fallidas.
Explicación:
LOAD: Refleja si la definición de la unidad se cargó correctamente. ACTIVE: El estado de activación de la unidad de alto nivel, es decir, generalización de SUB. SUB: El estado de activación de la unidad de bajo nivel, los valores dependen del tipo de unidad.
Aunque también puede usar esto para mostrar solo enabledunidades con:
systemctl list-unit-files --state=enabled
Si una unidad es enabledeso significa que el sistema la iniciará al inicio. Aunque configurar algo en enabledrealidad startno lo hace, por lo que deberá hacerlo manualmente o reiniciar el sistema después de configurarlo enabled.
Para habilitar y comenzar al mismo tiempo:systemctl enable --now ...
Aurélien Ooms
1
--state=enabledno tiene efecto en la versión 215 de systemd (en Raspbian 8 Jessie), pero funciona en la versión 229 de systemd (en Ubuntu 16.04.03 Xenial).
mpb
@mpb: Sin embargo, funciona perfectamente bien en la versión 235 en Arch Linux.
64
Para enumerar todos los systemdservicios que se encuentran state=activeysub=running
man systemctl
.Respuestas:
systemctl list-unit-files | grep enabled
enumerará todos los habilitados .Si desea cuáles se están ejecutando actualmente , necesita
systemctl | grep running
.Usa el que estás buscando. Habilitado, no significa que se esté ejecutando. Y correr no significa que esté habilitado. Son dos cosas diferentes.
Habilitado significa que el sistema ejecutará el servicio en el próximo arranque. Entonces, si habilita un servicio, aún necesita iniciarlo manualmente, o reiniciar y comenzará.
Ejecutar significa que se está ejecutando en este momento, pero si no está habilitado, no se reiniciará cuando reinicies.
fuente
systemctl | grep running
¡no me enumeres nada! Incluso si algo se está ejecutando solo se enumera en cuanto a su estado como:enabled, disabled, masked, static
systemctl list-unit-files --state=running
man systemctl
estados:Explicación:
LOAD
: Refleja si la definición de la unidad se cargó correctamente.ACTIVE
: El estado de activación de la unidad de alto nivel, es decir, generalización deSUB
.SUB
: El estado de activación de la unidad de bajo nivel, los valores dependen del tipo de unidad.Aunque también puede usar esto para mostrar solo
enabled
unidades con:Si una unidad es
enabled
eso significa que el sistema la iniciará al inicio. Aunque configurar algo enenabled
realidadstart
no lo hace, por lo que deberá hacerlo manualmente o reiniciar el sistema después de configurarloenabled
.fuente
systemctl enable --now ...
--state=enabled
no tiene efecto en la versión 215 de systemd (en Raspbian 8 Jessie), pero funciona en la versión 229 de systemd (en Ubuntu 16.04.03 Xenial).Para enumerar todos los
systemd
servicios que se encuentranstate=active
ysub=running
Para enumerar todos los servicios
systemd
que están enstate=active
y sub ejecutando o saliendofuente
Para ver los servicios 'habilitados', incluidos los que aún están en ejecución inicial / inicial:
Para ver todos los servicios actualmente en ejecución, ejecute:
fuente
sshd
vs.ssh
ysyslog
frentersyslog
.También una descripción general de todos los servicios activos y fallidos:
fuente