En Ubuntu, ¿hay un comando para mostrar una lista de TODOS los servicios de inicio automático?

22

En Ubuntu

  1. ¿Hay un comando para mostrar una lista de todos los servicios de inicio automático?
  2. ¿Hay un comando para verificar si un servicio se inicia automáticamente en el momento del arranque o no?

Hice Google e IRC. No puedo encontrar la respuesta. Tal vez no existan dichos comandos en Ubuntu. Al principio, pensé que todos los servicios de inicio automático estarían bajo /etc/rc2.d/, pero me equivoqué al respecto. Algunos están configurados solo bajo /etc/init/*.conf. Luego probé la chkconfigherramienta (la instalé manualmente), no funciona todo el tiempo. Por ejemplo, da el resultado incorrecto para el mongodbcual se inicia automáticamente /etc/init/mongodb.conf.

service --status-ally initctl listsolo puede indicar el estado actual de los servicios en lugar del estado de inicio automático. update-rc.des un comando para cambiar el estado de inicio automático en lugar de mostrar el estado.

Si no hay una respuesta a mi pregunta, me pregunto por qué es tan difícil verificar los servicios de inicio automático en Ubuntu.

SSS
fuente
Creo chkconfig --listque funcionará bien? onsignifica que el servicio se ejecuta en ese nivel de ejecución y que se iniciará automáticamente cuando se inicie el sistema.
máximo
1
Como lo que publiqué en mi pregunta, chkconfig no siempre funciona. por ejemplo, dará un resultado incorrecto para mongodb. Creo que podría ser porque mongodb usa /etc/init/mongodb.conf para hacer el inicio automático.
SSS
¿Qué tal ls /etc/rc?.d?
toxaq

Respuestas:

11

Ubuntu usa en Upstartlugar del initsistema tradicional . Upstart es más fuerte que init, pero es un poco más complicado que init.

Upstart, en contraste, está basado en eventos. Un "evento" puede ser algo así como "arrancar" ... o puede ser mucho más específico, como "la red está lista para usar ahora". Puede especificar qué scripts dependen de qué eventos. Cualquier cosa que no esté esperando un evento puede ejecutarse siempre que haya CPU disponible.

Este sistema basado en eventos tiene otra ventaja: teóricamente puede usarlo incluso después de que el sistema esté en funcionamiento. Upstart finalmente está programado para asumir tareas tales como o conectar dispositivos externos como unidades de memoria USB (actualmente manejadas por udev y hal), o ejecutar programas en momentos específicos (actualmente manejados por cron).

Como debe saber ahora, un demonio muerto (que no se ejecuta en el inicio) puede estar vivo y se inicia debido a un evento.

Ubuntu tiene tanto / etc / init, para Upstart, y /etc/init.d, para los viejos archivos SysV. Algunos de los archivos que contiene son scripts de SysV Init normales que aún no se han migrado. Pero algunos servicios que han migrado mantienen un enlace de /etc/init.d a / lib / init / upstart-job. Si ejecuta uno de esos, funciona, pero imprime una advertencia primero:

En lugar de invocar scripts de inicio a través de /etc/init.d, use la utilidad service (8), p. Ej. service mysql restart

Dado que el script que está intentando invocar se ha convertido en un trabajo Upstart, también puede usar la utilidad restart (8), por ejemplo, reiniciar mysql.

En una máquina Upstart, init proviene de upstart. En lugar de ejecutar un script rc maestro que llama a los scripts para un nivel de ejecución específico, el inicio de Upstart toma trabajos de su directorio de trabajos.

Ahora sabemos que no hay una manera simple de enumerar demonios de inicio automático, debe enumerar todos los demonios y verificarlos uno por uno. El demonio puede ser iniciado por inito por upstarto incluso por un evento posterior. La forma más sencilla de obtener esta lista es ejecutar este comando en el shell:

initctl show-config

El resultado se ve así:

...
hostname
  start on startup
udevtrigger
  start on ((startup and started udev) and not-container)
tty2
  start on (runlevel [23] and ((not-container or container CONTAINER=lxc) or container CONTAINER=lxc-libvirt))
...

Algunos elementos, como el primero, son tan simples que hostnamecomienzan en el inicio. Pero otros artículos pueden parecer más complicados. (Pero afortunadamente, legible por humanos :-))

Ehsan
fuente
Sabía la mayor parte de lo que publicaste. Aunque hay algo nuevo que no sé, aún no pueden resolver mi problema. Solo me gustaría saber si hay un comando que pueda hacer el trabajo fácilmente (tanto para los servicios de arranque como de inicio). Parece que ubuntu NO tiene uno. ¡Qué pena! por cierto, "initctl" solo puede manejar servicios de arranque, en lugar del sistema init tradicional. Si no hay una manera fácil, entonces tengo que usar la manera difícil ... gracias.
SSS
Notaría que, aunque las versiones modernas incorrectas de ubuntu se han mudado a systemd. Divertidamente, una buena parte de esta respuesta sigue siendo válida
Journeyman Geek
las nuevas versiones de Ubuntu no utilizan el sistema de arranque
João Pimentel Ferreira
5

En realidad, todos los servicios están presentes solo bajo /etc/init.d:

rc0.d contains the services which runs in runlevel 0
rc1.d contains the services which runs in runlevel 1
rc2.d contains the services which runs in runlevel 2
rc3.d contains the services which runs in runlevel 3
rc4.d contains the services which runs in runlevel 4
rc5.d contains the services which runs in runlevel 5
rc6.d contains the services which runs in runlevel 6

Una cosa más, todos los servicios están presentes rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.dtambién, pero es un enlace simbólico a /etc/init.dsolo.

Vea aquí este es el contenido del rc1.ddirectorio:

lrwxrwxrwx 1 root root  20 Aug 17 14:54 K15pulseaudio -> ../init.d/pulseaudio
lrwxrwxrwx 1 root root  22 Nov 28 18:47 K20acpi-support -> ../init.d/acpi-support
lrwxrwxrwx 1 root root  20 Aug 17 14:54 K20kerneloops -> ../init.d/kerneloops
lrwxrwxrwx 1 root root  23 Nov  7 15:24 K20openbsd-inetd -> ../init.d/openbsd-inetd
lrwxrwxrwx 1 root root  15 Aug 17 14:54 K20saned -> ../init.d/saned
lrwxrwxrwx 1 root root  27 Aug 17 14:54 K20speech-dispatcher -> ../init.d/speech-dispatcher
-rw-r--r-- 1 root root 369 Apr 14  2012 README
lrwxrwxrwx 1 root root  19 Aug 17 14:54 S30killprocs -> ../init.d/killprocs
lrwxrwxrwx 1 root root  19 Aug 17 14:54 S70dns-clean -> ../init.d/dns-clean

Aquí puede observar el enlace simbólico a init.d (K15pulseaudio -> ../init.d/pulseaudio).

Pero aquí todos los servicios están vinculados a init.d, ¿verdad? Pero no todos los servicios comenzarán; La razón son dos guiones.

El primero es un script S (S30killprocs) ---> inicio

El segundo es un script k (K15pulseaudio) ---> kill

Todos los servicios de script K eliminan los servicios y todos los servicios de script S inician los servicios para ese nivel de ejecución.

En breve

S70dns-clean -> ../init.d/dns-cleaniniciar el dns-cleanservicio en el nivel de ejecución 1.

K15pulseaudio -> ../init.d/pulseaudiomata el pulseaudioservicio en el nivel de ejecución 1.

max
fuente
No es cierto para los servicios de inicio, que pueden no aparecer aquí en absoluto.
Comodín el
2

Puede instalar sysv-rc-conf que es un programa ncurses para configurar / mostrar los niveles de rc gráficamente.

dseira
fuente
0

¿Hay un comando para mostrar una lista de todos los servicios de inicio automático?

Mira aquí: update-rc-d-cheat-sheet

¿Hay un comando para verificar si un servicio se inicia automáticamente en el momento del arranque o no?

Ninguno, lo sé (que no significa nada;), pero puede comenzar a leer aquí: foro askubuntu - dependencia del servicio

StefanKaerst
fuente