Je cherche un moyen d'obtenir une liste de tous les services (/etc/init.d ou upstart ou systemd), qui sont censés démarrer (ou avoir été démarrés au démarrage).
Comment obtenir une liste de tous les services de démarrage? - Je connais cette question, et elle suggère d'utiliser service --status-all
.
Mais cela ne me montre pas quels services sont censés fonctionner . Il appelle tous les scripts d'initialisation avec l' status
argument " ". Ceci est une liste de tous les services qui pourraient être exécutés.
Mais je voudrais savoir si un service qui avait été démarré au démarrage est toujours en cours d'exécution.
Exemple…
J'ai installé webfs. Mais je ne veux pas qu'il fonctionne au démarrage. Ainsi je l' ai désactivé: sudo update-rc.d webfs disable
. Et j'ai également installé la samba et elle devrait fonctionner au démarrage. Mais il est arrêté (pour une raison quelconque). sudo service --status-all
ne m'aide pas ici:
$ sudo service --status-all 2>/dev/null | grep -E 'samba$|webfs'
[ - ] samba
[ - ] webfs
Les deux sont éteints mais je n'ai aucune idée que celle-ci (samba) est censée être allumée.
Donc…
Comment puis-je obtenir une liste de tous les services qui démarrent au démarrage? Et, en tant qu'extension, existe-t-il un moyen facile d'obtenir le "statut" de ces services (sinon, je vais simplement parcourir cette liste et exécuter "service $ service status", ou quelque chose comme ça).
Merci, Alexander
Edit 2015-05-04: Je suis sur Ubuntu 14.04.
L'objectif principal de cette question est le suivant:
Mais je voudrais savoir si un service qui avait été démarré au démarrage est toujours en cours d'exécution.
Pour cette raison, initctl list
n'aide pas beaucoup. Il ne prend pas vraiment en compte les services démarrés par les /etc/init.d
scripts (par rapport aux scripts parvenus dans /etc/init
).
Une liste de /etc/rc?.d/S*
n'aide pas non plus. Il générerait une liste de services, qui auraient pu être démarrés dans un niveau d'exécution donné. Cela ne me montre pas si un service, qui aurait dû être démarré, est toujours en cours d'exécution.
Fondamentalement, je recherche quelque chose comme svcs -x
Solaris pour Ubuntu. Avec svcs -x
, j'aurais une sortie si un service, qui a été démarré, ne fonctionne plus. Cela, j'aurais également besoin d'Ubuntu.
Raison: je voudrais avoir une vérification générique (plus ou moins ...) de notre système de surveillance Icinga / Nagios, qui m'alerterait, si un service ne fonctionne plus, qui devrait fonctionner. Comme nous avons de nombreux serveurs différents pour de nombreux clients différents, il n'est pas vraiment évolutif pour définir une liste de services "importants".
la source
initctl list
répertorier les processus démarrés / en cours d'exécution, mais cette liste inclurait également les processus démarrés manuellementinitctl list
. Mais cela ne répond pas vraiment, car cela montrerait également les services démarrés manuellement. Et il ne montre pas les services qui ne fonctionnent pas.Réponses:
Tous les services démarrent au démarrage:
Liste de tous les services qui existent dans le système:
la source
Voici mon oneliner
grep -i 'runlevel' /etc/init/* | awk '!/#/ && /start on/ && /2/ {gsub("/"," "); print $0 }' | cut -d ' ' -f4-
Une sortie un peu plus propre peut être obtenue avec
grep -i 'runlevel' /etc/init/* | awk '/start on/ && /2/ {gsub("/"," "); gsub(":", " ");gsub(".conf"," "); print $3 }'
Entrons maintenant dans les détails. Les travaux parvenus sont tous stockés dans
/etc/init/
, non? Les emplois là-bas ont tous une ligne indiquant à quel niveau d'exécution ils commencent. Le niveau d'exécution 2 est un démarrage normal, le niveau d'exécution par défaut. Donc, si nous grep toutes les lignes qui disentrunlevel
et nettoyons la sortie de grep avec awk pour ne faire correspondre que les lignes avecstart on
et le niveau d'exécution # 2, nous obtenons la liste des travaux parvenus. Le reste est juste pour formater les besoins, remplacer / dans les noms de fichiers dans l'espace et couper le chemin d'accès à ces fichiers, en laissant les noms de fichiers eux-mêmes.La
!/#/
partie consiste à répondre aux directives de démarrage éventuellement commentées, que j'avais personnellement ajoutées manuellement.Entre autres choses, il y a
/etc/rc2.d
où (si je comprends bien) vous avez des scripts de priorité moindre.Une doublure brute pour cela est:
ls /etc/rc2.d/* | grep S | awk '{sub("S"," "); print $2}
Les scripts qui, dans ce dossier, s'exécutent réellement au niveau d'exécution 2 sont nommés en commençant par S et suivis d'un numéro de priorité. Maintenant, fondamentalement, nous obtenons tous les fichiers commençant par S, et nous les listons simplement avec un nom prioritaire (nous devons encore trouver comment nettoyer cela).
Comme muru l'a correctement souligné dans les commentaires, il existe également des
/etc/init/*.override
fichiers qui peuvent ".. .Modifier le déroulement d'un travail sans avoir à modifier directement son fichier de configuration" ( page de manuel d'init )À l'heure actuelle, comme je n'ai pas beaucoup d'expérience avec ces fichiers, je ne peux que suggérer de parcourir ces fichiers .override en utilisant le manuel 'grep' /etc/init/*.override 'pour répertorier les services qui doivent démarrer manuellement avec les commandes
initctl
ouservices
.la source
.override
fichiers.Liste de tous les services et de leur état d'exécution respectif - style chkconfig:
Modification interactive basée sur le texte de tous les éléments répertoriés:
Vous devrez peut-être l'installer si ce n'est pas le cas:
la source