web-dev-qa-db-fra.com

Comment lire les résultats "service --status-all"

Je dois identifier les services en cours d'exécution, mais je ne peux pas comprendre les résultats de l'exécution de service --status-all. Je veux dire qu'est-ce que ?, - et + = moyenne?

$ 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?

90
Muhammad Gelbana

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

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

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

Référence: man service

100
Sean

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 n'est pas en cours d'exécution
  • ?: 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 commande status, l'état est ?.
  • si le script d'initialisation (avec l'argument status) est à l'état de sortie nul et que la sortie n'est pas vide, l'état est +.
  • sinon, l'état est -.
29
muru

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 commande status dans le script de service. La commande service --status-all exécute en fait service <service-name> status pour chaque service disponible.

1
Arronical

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

Certains services de /var/run/ ont un accès en lecture uniquement à l'utilisateur root. Ces services affichent l’état [-] sans Sudo et [+] avec Sudo.

0
user663581