Question Comment lire les résultats du service --status-all


Je dois identifier les services en cours d'exécution mais je n'arrive pas à comprendre les résultats de l'exécution service --status-allJe veux dire ?, - et + signifier ?

$ service --status-all
 [ + ]  acpid
 [ + ]  anacron
 [ + ]  apparmor
 [ ? ]  apport
 [ ? ]  atieventsd
 [ + ]  avahi-daemon
 [ ? ]  binfmt-support
 [ + ]  bluetooth
 [ - ]  brltty
 [ + ]  console-font
 [ + ]  console-setup
 [ + ]  cron
 [ + ]  cups
 [ + ]  cups-browsed
 [ - ]  dbus
 [ ? ]  dns-clean
 [ + ]  friendly-recovery
 [ - ]  grub-common
 [ ? ]  irqbalance
 [ - ]  kerneloops
 [ ? ]  killprocs
 [ + ]  kmod
 [ ? ]  lightdm
 [ - ]  lm-sensors
 [ ? ]  mysql
 [ ? ]  networking
 [ ? ]  ondemand
 [ ? ]  pppd-dns
 [ - ]  procps
 [ - ]  pulseaudio
 [ ? ]  rc.local
 [ + ]  resolvconf
 [ + ]  rfkill-restore
 [ + ]  rfkill-store
 [ - ]  rsync
 [ + ]  rsyslog
 [ + ]  saned
 [ ? ]  sendsigs
 [ + ]  setvtrgb
 [ ? ]  speech-dispatcher
 [ - ]  sudo
 [ + ]  timidity
 [ + ]  udev
 [ ? ]  umountfs
 [ ? ]  umountnfs.sh
 [ ? ]  umountroot
 [ - ]  unattended-upgrades
 [ - ]  urandom
 [ + ]  virtualbox
 [ - ]  x11-common

Et lancer cette commande avec sudo ferait-il une différence? Je l'ai essayé et dans mon cas, cela n'a fait aucune différence, mais peut-il différer dans d'autres configurations?


77
2018-01-17 21:52


origine




Réponses:


La sortie de service --status-all liste l'état des services contrôlés par System V.

le + indique que le service est en cours d'exécution, - indique un service arrêté. Vous pouvez le voir en courant service SERVICENAME status pour un + et - un service.

Certains services sont gérés par Upstart. Vous pouvez vérifier le statut de tous Upstart services avec sudo initctl list. Tout service géré par Upstart montrera également dans la liste fournie par service --status-all mais sera marqué avec un ?.

Référence: man service


84
2018-02-17 16:37



Peut être intéressant: sortie pour les services marqués - Et + ira à stdout, sortie pour les services marqués ? ira à stderr. - dave1010
"Tout service géré par Upstart apparaîtra également dans la liste fournie par le service --status-all mais sera marqué par un?." Ce n'est pas strictement vrai. Juste essayé les deux commandes sur un serveur. service --status-all me donne 43 services. initctl list me donne 93. Seules quelques-unes de ces 93 sont des doublons. - Andrew Ensley
Ma machine Ubuntu ne répertorie pas "Upstart services" comme "?" par service --status-all - hfrmobile
@hfrmobile sauf si vous êtes toujours au 14.04 ou spécifiez au moment du démarrage pour utiliser Upstart vous utilisez 'systemd' maintenant. Je ne vois plus non plus "?" sur mon système 16.04. - Sean
en cours d'exécution 16.10 ... - hfrmobile


Ce n'est pas documenté dans la page de manuel, mais un coup d'œil sur la source confirme la première supposition:

  • +: le service est en cours d'exécution
  • -: le service ne fonctionne pas
  • ?: l'état du service ne peut pas être déterminé (pour une raison quelconque).

Le code actuel:

 if ! is_ignored_file "${SERVICE}" \
 && [ -x "${SERVICEDIR}/${SERVICE}" ]; then
         if ! grep -qs "\(^\|\W\)status)" "$SERVICE"; then
           #printf " %s %-60s %s\n" "[?]" "$SERVICE:" "unknown" 1>&2
           echo " [ ? ]  $SERVICE" 1>&2
           continue
         else
           out=$(env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status 2>&1)
           if [ "$?" = "0" -a -n "$out" ]; then
             #printf " %s %-60s %s\n" "[+]" "$SERVICE:" "running"
             echo " [ + ]  $SERVICE"
             continue
           else
             #printf " %s %-60s %s\n" "[-]" "$SERVICE:" "NOT running"
             echo " [ - ]  $SERVICE"
             continue
           fi
         fi
   #env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status
 fi

Les conditions sont les suivantes:

  • si le script init ne supporte pas un status commande, l'état est ?.
  • si le script init (avec le status argument) le statut de sortie est zéro et la sortie n'est pas vide, l'état est +.
  • sinon l'état est -.

25
2017-07-09 16:00





je crois que + signifie que le service est actif / en cours d'exécution, - signifie qu'il est inactif / arrêté, et ? signifie que la commande ne peut pas déterminer de manière concluante si elle est active ou non, car le service n’a pas de status commande dans le script de service. le service --status-all commande fonctionne réellement service <service-name> status pour chaque service disponible.


1
2017-07-09 15:53





Je trouve que courir avec / sans sudo fait la différence

Quelques services dans /var/run/ avoir un accès en lecture uniquement à l'utilisateur root. Ces services affichent le statut [-] sans pour autant sudo, et [+] avec sudo.


0
2018-03-09 23:20



Êtes-vous sûr? certains états de service changent dynamiquement; peut-être que vous ne voyez que des variations - Zanna