Dans Ubuntu,
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 sous /etc/rc2.d/
, mais je me suis trompé à ce sujet. Certains ne sont configurés que sous /etc/init/*.conf
. Ensuite, j'ai essayé l'outil chkconfig
(installé manuellement), il ne fonctionne pas tout le temps. Par exemple, cela donne un résultat incorrect pour mongodb
qui est démarré automatiquement à partir de /etc/init/mongodb.conf
.
service --status-all
et initctl list
peuvent uniquement indiquer le statut actuel des services au lieu du statut de démarrage automatique. update-rc.d
est 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.
Ubuntu utilise Upstart
à la place du système init
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 moments spécifiques (actuellement gérés par cron).
Comme vous devez le savoir maintenant, un démon mort (qui ne s'exécute pas au démarrage) peut être actif 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'appeler des scripts d'initialisation via /etc/init.d, utilisez l'utilitaire service (8), par exemple.
service mysql restart
Le script que vous tentez d'appeler ayant été converti en tâche Upstart, vous pouvez également utiliser l'utilitaire restart (8), par exemple. redémarrez 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 lancé par init
ou par upstart
ou même par un événement ultérieur. Le moyen le plus simple d'obtenir cette liste consiste à 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, hostname
démarre au démarrage. Mais d'autres éléments peuvent sembler plus compliqués. (Mais heureusement lisible par l'homme :-))
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 sous rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
également, mais il s’agit d’un lien symbolique vers /etc/init.d
uniquement.
Voici le contenu du répertoire rc1.d
:
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-clean
start dns-clean
service au niveau d'exécution 1.
K15pulseaudio -> ../init.d/pulseaudio
tue le service pulseaudio
au niveau d'exécution 1.
Vous pouvez installer sysv-rc-conf qui est un programme ncurses pour configurer/afficher graphiquement les niveaux de rc.
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