Comment lire les résultats «service --status-all»

98

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-all, je veux dire, qu'est-ce que c'est ? , - et + signifie?

$ 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 exécuter cette commande avec sudo ferait-il une différence? Je l'ai essayé et dans mon cas, cela ne faisait aucune différence, mais peut-il différer dans d'autres configurations?

Muhammad Gelbana
la source

Réponses:

106

La sortie de service --status-allliste 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 exécutant service SERVICENAME statusun service +et -.

Certains services sont gérés par Upstart. Vous pouvez vérifier le statut de tous les Upstartservices avec sudo initctl list. Tout service géré par Upstarts'affichera également dans la liste fournie par service --status-allmais sera marqué d'un ?.

Référence: man service

Sean
la source
2
Peut présenter un intérêt: sortie pour les services marqués -& +ira à stdout, sortie pour les services marqués ?ira à stderr.
dave1010
1
"Tout service géré par Upstart apparaîtra également dans la liste fournie par service --status-all mais sera marqué par un?." Ce n'est pas strictement vrai. Juste essayé les deux commandes sur un serveur. service --status-allme donne 43 services. initctl listme donne 93. Seules une poignée de ces 93 sont des doublons.
Andrew Ensley le
Ma machine Ubuntu ne répertorie pas les "services Upstart" comme "?" par service --status-all
hfrmobile
@hfrmobile sauf si vous êtes toujours sur 14.04 ou si vous spécifiez au démarrage que Upstartvous utilisez 'systemd' maintenant. Je ne vois plus non plus "?" sur mon système 16.04.
Sean
en cours d'exécution
16h10
30

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

  • +: 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:

  • si le script d'initialisation ne prend pas en charge une statuscommande, l'état est ?.
  • Si l' statusétat de sortie du script init (avec l' argument) est égal à zéro et que la sortie n'est pas vide, l'état l'est +.
  • sinon l'état est -.
muru
la source
1

Je pense que cela +signifie que le service est actif / en cours d'exécution, -qu'il est inactif / arrêté et ?que la commande ne peut pas déterminer avec certitude si elle est active ou non, car le service n'a pas de statuscommande dans le script de service. La service --status-allcommande s'exécute réellement service <service-name> statuspour chaque service disponible.

Arronique
la source
0

Je trouve que courir avec / sans sudofait une différence.

Certains services /var/run/ont un accès en lecture uniquement à l'utilisateur root. Ces services affichent le statut [-]sans sudoet [+]avec sudo.

utilisateur663581
la source
1
Êtes-vous sûr? certains statuts de service changent de manière dynamique; peut-être que vous voyez juste une variation
Zanna