Dans Ubuntu, y a-t-il une commande pour afficher une liste de TOUS les services de démarrage automatique?

22

Dans Ubuntu,

  1. Existe-t-il une commande pour afficher une liste de tous les services de démarrage automatique?
  2. Existe-t-il une commande permettant de vérifier si un service est démarré automatiquement au démarrage ou non?

J'ai fait Google et IRC. Je ne trouve pas la réponse. Peut-être qu’il n’existe pas de telles commandes dans Ubuntu. Au début, je pensais que tous les services à démarrage automatique seraient insuffisants /etc/rc2.d/, mais je me suis trompé à ce sujet. Certains sont configurés uniquement sous /etc/init/*.conf. Ensuite, j'ai essayé l' chkconfigoutil (installé manuellement), il ne fonctionne pas tout le temps. Par exemple, cela donne un résultat erroné pour mongodblequel on lance automatiquement /etc/init/mongodb.conf.

service --status-allet initctl listpeut uniquement indiquer le statut actuel des services au lieu du statut de démarrage automatique. update-rc.dest une commande permettant de modifier le statut de démarrage automatique au lieu d'afficher le statut.

S'il n'y a pas de réponse à ma question, je me demande simplement pourquoi il est si difficile de vérifier les services de démarrage automatique dans Ubuntu.

SSS
la source
Je pense que ça chkconfig --listva marcher? onsignifie que le service est exécuté sur ce niveau d'exécution et qu'il se lancera automatiquement au démarrage du système.
Max
1
Comme ce que j'ai posté dans ma question, chkconfig ne fonctionne pas toujours. par exemple, cela donnera un résultat erroné pour mongodb. Je pense que cela pourrait être dû au fait que mongodb utilise /etc/init/mongodb.conf pour effectuer le démarrage automatique.
SSS
Que diriez- ls /etc/rc?.dvous
Toxaq

Réponses:

11

Ubuntu utilise à la Upstartplace du initsystème traditionnel . Upstart est plus fort que init, mais c'est un peu plus compliqué que init.

Upstart, en revanche, est basé sur les événements. Un "événement" peut être quelque chose comme le "démarrage" ... ou il peut être beaucoup plus spécifique, comme "le réseau est prêt à être utilisé maintenant". Vous pouvez spécifier quels scripts dépendent de quels événements. Tout ce qui n'attend pas un événement peut être exécuté chaque fois que de la CPU est disponible.

Ce système basé sur les événements présente un autre avantage: vous pouvez en principe l’utiliser même après que le système est opérationnel. Upstart doit éventuellement prendre en charge des tâches telles que la connexion de périphériques externes tels que des clés USB (actuellement gérées par udev et hal), ou l'exécution de programmes à des heures spécifiques (gérées par le cron).

Comme vous devez le savoir maintenant, un démon mort (qui ne s'exécute pas au démarrage) peut être en vie et démarrer à cause d'un événement.

Ubuntu a à la fois / etc / init, pour Upstart, et /etc/init.d, pour les anciens fichiers SysV. Certains de ses fichiers sont des scripts SysV Init standard qui n’ont pas encore été migrés. Cependant, certains services ayant migré maintiennent un lien entre /etc/init.d et / lib / init / upstart-job. Si vous en utilisez un, cela fonctionne, mais il affiche d'abord un avertissement:

Plutôt que d’invoquer des scripts init via /etc/init.d, utilisez l’utilitaire service (8), par exemple service mysql restart

Puisque le script que vous essayez d'appeler a été converti en tâche Upstart, vous pouvez également utiliser l'utilitaire restart (8), par exemple, redémarrer mysql.

Sur une machine Upstart, init vient de Upstart. Au lieu d'exécuter un script maître rc appelant les scripts pour un niveau d'exécution spécifique, init d'Uststart extrait les travaux de son répertoire de travaux.

Nous savons maintenant qu'il n'existe pas de moyen simple de répertorier les démons à démarrage automatique. Vous devez répertorier tous les démons et les vérifier un par un. Le démon peut être démarré par initou par upstartou même par un événement ultérieur. Le moyen le plus simple d’obtenir cette liste est d’exécuter cette commande dans le shell:

initctl show-config

La sortie ressemble à ceci:

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

Certains éléments, comme le premier, sont si simples et hostnamedémarrent au démarrage. Mais d'autres éléments peuvent sembler plus compliqués. (Mais heureusement lisible par l'homme :-))

Ehsan
la source
Je savais la plupart de ce que tu as posté. Même s'il y a quelque chose de nouveau que je ne connais pas, ils ne peuvent toujours pas résoudre mon problème. Je voudrais juste savoir s’il existe une commande qui peut faire le travail facilement (pour les services d’initialisation et d’initialisation). Il semble que Ubuntu n'en a PAS. Quel dommage! A ce propos, "initctl" ne peut gérer que les services "upstart", plutôt que le système init traditionnel. S'il n'y a pas de moyen facile, alors je dois utiliser le moyen le plus difficile ... merci.
SSS
Je tiens à noter que les versions modernes d’ubuntu ne sont pas incorrectes et sont passées à systemd. De manière amusante, une bonne partie de cette réponse est toujours valable
Journeyman Geek
les nouvelles versions d'Ubuntu n'utilisent pas upstart mais systemd unix.stackexchange.com/a/287282/147671
João Pimentel Ferreira
5

En fait, tous les services sont présents dans /etc/init.d uniquement:

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

Une dernière chose, tous les services sont présents rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.dégalement, mais il ne s'agit que d'un lien symbolique /etc/init.d.

Voir ici c'est le contenu du rc1.drépertoire:

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

Ici, vous pouvez observer le lien symbolique vers init.d (K15pulseaudio -> ../init.d/pulseaudio).

Mais ici chaque service est lié à init.d, non? Mais chaque service ne commencera pas; la raison est deux scripts.

Le premier est un script S (S30killprocs) ---> start

Le second est un script k (K15pulseaudio) ---> kill

Tous les services de script K tuent les services et tous les services de script S démarrent les services pour ce niveau d'exécution.

En bref

S70dns-clean -> ../init.d/dns-cleancommencer le dns-cleanservice au niveau d'exécution 1.

K15pulseaudio -> ../init.d/pulseaudiotue le pulseaudioservice dans le niveau d'exécution 1.

max
la source
Ce n'est pas le cas pour les services récents, qui peuvent ne pas apparaître ici du tout.
Wildcard
2

Vous pouvez installer sysv-rc-conf qui est un programme ncurses pour configurer / afficher graphiquement les niveaux de rc.

dseira
la source
0

Existe-t-il une commande pour afficher une liste de tous les services de démarrage automatique?

Regardez ici: update-rc-d-cheat-sheet

Existe-t-il une commande permettant de vérifier si un service est démarré automatiquement au démarrage ou non?

Aucune, à ma connaissance (ce qui ne veut rien dire;), mais vous pouvez commencer à lire ici: forum askubuntu - dépendance au service

Stefan Kaerst
la source