22 votos

En Ubuntu, ¿existe un comando que muestre una lista de TODOS los servicios de autoinicio?

En Ubuntu,

  1. ¿Existe un comando para mostrar una lista de todos los servicios de autoinicio?
  2. ¿Existe un comando para comprobar si un servicio se autoinicia en el arranque o no?

He buscado en Google y en el IRC. No puedo encontrar la respuesta. Tal vez no hay tales comandos existen en Ubuntu. Al principio, pensé que todos los servicios autoarrancados estarían bajo /etc/rc2.d/ pero me equivoqué en eso. Algunos están configurados sólo bajo /etc/init/*.conf . Entonces probé el chkconfig (lo instalé manualmente), no funciona siempre. Por ejemplo, da un resultado erróneo para mongodb que se autoinicia desde /etc/init/mongodb.conf .

service --status-all y initctl list sólo puede indicar el estado actual de los servicios en lugar del estado de autoinicio. update-rc.d es un comando para cambiar el estado del autoarranque en lugar de mostrar el estado.

Si no hay respuesta a mi pregunta, sólo me pregunto por qué es tan difícil comprobar los servicios de autoinicio en Ubuntu.

0 votos

Creo que chkconfig --list funcionará bien? on significa que el servicio se está ejecutando en ese nivel de ejecución, y ese servicio se iniciará automáticamente cuando el sistema arranque.

1 votos

Como lo que he publicado en mi pregunta, chkconfig no siempre funciona. por ejemplo, dará un resultado erróneo para mongodb. Creo que podría ser porque mongodb utiliza /etc/init/mongodb.conf para hacer el auto-inicio.

0 votos

¿Qué tal si ls /etc/rc?.d ?

11voto

Anjan3 Puntos 1830

Ubuntu utiliza Upstart en lugar del tradicional init sistema. Upstart es más fuerte que init, pero es un poco más complicado que init .

En cambio, Upstart se basa en los eventos. Un "evento" puede ser algo como "arrancar" ... o puede ser mucho más específico, como "la red está lista para ser usada ahora". Puedes 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: en teoría se puede utilizar incluso después de que el sistema esté en funcionamiento. Upstart está previsto que se encargue de tareas como la conexión de dispositivos externos, como las unidades de disco duro (actualmente gestionadas por udev y hal), o la ejecución de programas a horas específicas (actualmente gestionada por cron).

Como deberías saber ahora, un demonio muerto (que no se ejecuta en el arranque) puede estar vivo y arrancar debido a un evento.

Ubuntu tiene tanto /etc/init, para Upstart, como /etc/init.d, para los antiguos archivos SysV. Algunos de los archivos en él son SysV Init scripts regulares que no han sido migrados todavía. Pero algunos servicios que han migrado mantienen un enlace desde /etc/init.d a /lib/init/upstart-job. Si ejecuta uno de esos, funciona, pero imprime una advertencia antes:

En lugar de invocar init scripts a través de /etc/init.d, utilice la utilidad service(8), por ejemplo service mysql restart

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

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

Ahora sabemos que no hay una forma sencilla de listar los daemons de auto-inicio, deberías listar todos los daemons y comprobarlos uno por uno. El demonio puede ser iniciado por init o por upstart o incluso por un evento posterior. La forma más sencilla de obtener esta lista es ejecutando este comando en el Shell:

initctl show-config

El resultado es el siguiente:

...
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 artículos, como el primero, son muy sencillos, hostname se inicia en el arranque. Pero otros elementos pueden parecer más complicados. (Pero afortunadamente legibles para el ser humano :-) )

0 votos

Sabía la mayor parte de lo que has publicado. Aunque hay algo nuevo que no conozco, todavía no pueden resolver mi problema. Sólo me gustaría saber si hay un comando que pueda hacer el trabajo fácilmente (tanto para upstart como para los servicios init). Parece que ubuntu NO tiene ninguno. Por cierto, "initctl" sólo puede manejar los servicios upstart, y no el sistema init tradicional. Si no hay una manera fácil, entonces tengo que usar la manera difícil... gracias.

0 votos

Me gustaría señalar, aunque no incorrecto las versiones modernas de ubuntu han pasado a systemd. Divertidamente una buena parte de esta respuesta sigue siendo válida

1 votos

Las nuevas versiones de Ubuntu no utilizan upstart sino systemd unix.stackexchange.com/a/287282/147671

5voto

Ori Puntos 1287

En realidad, todos los servicios están presentes sólo en /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 en rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d también, pero es un enlace simbólico a /etc/init.d sólo.

Ver aquí este es el contenido de rc1.d directorio:

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í puedes observar el enlace simbólico a init.d (K15pulseaudio -> ../init.d/pulseaudio).

Pero aquí cada servicio está vinculado a init.d, ¿verdad? Pero todos los servicios no se inician; la razón son dos scripts.

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

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

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

En resumen

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

K15pulseaudio -> ../init.d/pulseaudio mata a pulseaudio servicio en el nivel de ejecución 1.

0 votos

No es el caso de los servicios advenedizos, que pueden no aparecer aquí en absoluto.

2voto

dseira Puntos 36

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

0voto

Noah McIlraith Puntos 1241

¿Existe un comando para mostrar una lista de todos los servicios de autoinicio?

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

¿Existe un comando para comprobar si un servicio se autoinicia en el arranque o no?

Ninguna, que yo sepa (lo que no significa nada ;), pero puedes empezar a leer aquí: askubuntu forum - dependencia del servicio

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: