¿Comando para enumerar los servicios que comienzan en el inicio?


144

¿Hay un comando para enumerar los servicios que se ejecutan al inicio? Me imagino que implicaría el análisis /etc/init.d/y los diversos /etc/rc.*directorios.

Respuestas:


104

Simplemente puede usar el initctl listcomando de shell para enumerar el contenido en /etc/initlugar del dbus-sendcomando sugerido .


2
¿Funciona esto en Ubuntu 18.04? Me sale "initctl: comando no encontrado" (en bash)
Sanjay Manohar

121

La respuesta rápida es: depende de su initsistema.

La respuesta larga es: para las versiones actuales de Ubuntu, probablemente tenga una combinación de Upstart y SystemV . Las nuevas versiones de Ubuntu 15.04 después de "Vervet Vivid" (y otras distribuciones de Linux como RHEL / CentOS 7) se están moviendo a utilizar SystemD .

Advenedizo

Para enumerar todos los servicios:

initctl list

Para enumerar todos los servicios de Upstart y ejecutarlos initctl show-config, este resumen puede ser útil:

initctl list | awk '{ print $1 }' | xargs -n1 initctl show-config

Sistema V

Para enumerar todos los servicios:

service --status-all

O:

# for init scripts:
ls /etc/init.d/

# for runlevel symlinks:
ls /etc/rc*.d/

SystemD

Para enumerar todos los servicios:

systemctl list-unit-files --type=service

O:

ls /lib/systemd/system/*.service /etc/systemd/system/*.service

99
Esta debería ser la respuesta aceptada.
sjas

service --status-allNO muestra si los servicios están habilitados para iniciarse en el arranque, al menos no en Ubuntu 16. Muestra si los servicios se están ejecutando actualmente o no.
Comodín el

1
Tuve sudo service --status-allque obtener todos los servicios para aparecer. Algunos estaban ocultos cuando solo ejecuté service --status-allen una cuenta no root.
Phlucious

@Phlucious: Gracias por mencionar eso. Supuse que era bien sabido que estos comandos se ejecutan normalmente como root ( systemctl, service, initctl...), ya que generalmente se consideran comandos de administración del sistema.
TrinitronX

13

Los directorios /etc/init.dy /etc/rc.*han sido reemplazados por la upstartherramienta ' ' init. Aunque los scripts en estos directorios se ejecutarán como se esperaba, el nuevo método para ejecutar cosas en init está definido por archivos en/etc/init/

Puede enumerar todos los trabajos de arranque con la consulta de arranque en dbus:

dbus-send --print-reply --system --dest=com.ubuntu.Upstart \
        /com/ubuntu/Upstart com.ubuntu.Upstart0_6.GetAllJobs

Puede que tenga que cambiar 0_6para reflejar la versión de advenedizo que tiene. Este comando funciona en mi instalación lúcida.


3
@Eric H: ¿Podría configurar la respuesta a continuación como correcta en su lugar? initctl listEs mucho mejor que este comando dbus. Sin embargo, me gustaría dejar esta respuesta aquí como referencia (en lugar de eliminarla por completo).
Jeremy Kerr

12

Si desea una buena representación gráfica de los servicios y el tiempo que lleva arrancar, intente:

apt-get install bootchart

11

Lo usaría initctl show-config <servicename>para obtener realmente los detalles de cuándo / si su servicio se iniciará durante el arranque.

Al igual que:

$ initctl show-config myservice
myservice
  start on runlevel [2345]
  stop on runlevel [!2345]

O para NFS4 idmap-daemon:

$ initctl show-config idmapd
idmapd
  start on (local-filesystems or mounting TYPE=nfs4)
  stop on runlevel [06]

chkconfig solo es preferible en sistemas basados ​​en RedHat en mi humilde opinión.


1
Esta es la respuesta correcta. No tengo idea de por qué todas las respuestas incorrectas e incompletas están tan altamente votadas.
Cerin

1
Esto no funciona para las personas que usan SysV, estoy de acuerdo en que es una buena respuesta, pero está incompleto.
Gabriel Netto

9

El 12.04 podríamos usar:

sudo apt-get install chkconfig
chkconfig --list

pero fue eliminado en 12.10 .

Salida de muestra:

acpi-support              0:off  1:off  2:on   3:on   4:on   5:on   6:off
acpid                     0:off  1:off  2:off  3:off  4:off  5:off  6:off
apparmor                  0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on

2
No funciona en Ubuntu. packages.ubuntu.com/…
AB

@AB gracias por hacérmelo saber! Hoy en día es raro que los que votan abajo comenten: requiere coraje y me permite aprender. actualizado con la versión en la que funciona.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件



0

Además de los servicios del sistema y scripts bajo:

/etc/init.d/
/ lib / systemd / system /
/ etc / systemd / system /

Probablemente también haya aplicaciones de inicio automático , por ejemplo:

find / -name "*autostart*"

ls -1 "/etc/xdg/autostart" "/home/$USER/.config/autostart" "/usr/share/gdm/autostart"  "/usr/share/gnome/autostart"

-2

Usando gawk:

ls -l /etc/rc*.d/* | gawk 'match($0, /rc([0-6S]).d.*\/(.*)$/, a) {l[a[2]]=l[a[2]]a[1]","}; END{for(v in l){print v,substr(l[v],1,length(l[v])-1)}}'

Salida de muestra:

$ ls -l /etc/rc*.d/* | gawk 'match($0, /rc([0-6S]).d.*\/(.*)$/, a) {l[a[2]]=l[a[2]]a[1]","}; END{for(v in l){print v,substr(l[v],1,length(l[v])-1)}}' | egrep README
README 0,1,2,3,4,5,6,S
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.