¿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.

Eric H
fuente

Respuestas:

104

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

Scott
fuente
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
TrinitronX
fuente
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.

Jeremy Kerr
fuente
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
BuZZ-dEE
fuente
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.

CBmemnon
fuente
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
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
fuente
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 新疆 改造 中心 法轮功 六四 事件
En Precise: packages.ubuntu.com/precise/chkconfig
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"
Noam Manos
fuente
-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
Carlos Alvsan
fuente