So lesen Sie die Ergebnisse von "service --status-all"


98

Ich muss die aktuell ausgeführten Dienste identifizieren, kann aber die Ergebnisse der Ausführung nicht herausfinden. service --status-allIch meine, was bedeutet das ? , - und + bedeuten?

$ 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

Und würde es einen Unterschied machen, wenn Sie diesen Befehl mit sudo ausführen? Ich habe es versucht und in meinem Fall hat es keinen Unterschied gemacht, aber kann es in anderen Setups abweichen?

Antworten:


106

Die Ausgabe von service --status-alllistet den Status der von kontrollierten Dienste auf System V.

Das +Symbol zeigt an, dass der Dienst ausgeführt wird, und dass der Dienst -angehalten wurde. Sie können dies sehen, indem Sie service SERVICENAME statusfür a +und -service ausführen.

Einige Dienste werden von verwaltet Upstart. Sie können den Status aller UpstartDienste mit überprüfen sudo initctl list. Jeder von verwaltete Dienst Upstartwird auch in der von bereitgestellten Liste angezeigt service --status-all, ist jedoch mit einem gekennzeichnet ?.

Referenz: man service


2
Kann von Interesse sein: Die Ausgabe für die mit -& gekennzeichneten Dienste +erfolgt nach stdout, die Ausgabe für die mit & gekennzeichneten Dienste ?erfolgt nach stderr.
Dave1010

1
Msgstr "Jeder von Upstart verwaltete Dienst wird auch in der vom Dienst" --status-all "bereitgestellten Liste angezeigt, ist jedoch mit einem? Gekennzeichnet." Das ist nicht ganz richtig. Habe gerade beide Befehle auf einem Server ausprobiert. service --status-allgibt mir 43 Dienste. initctl listgibt mir 93. Nur eine Handvoll dieser 93 sind Duplikate.
Andrew Ensley

Mein Ubuntu-Rechner listet "Upstart-Dienste" nicht als "?" nach service --status-all
hfrmobile

@hfrmobile, es sei denn, Sie sind noch am 14.04 oder geben beim Booten an, dass UpstartSie "systemd" jetzt verwenden. Ich sehe auch nicht mehr "?" auf meinem 16.04 System.
Sean

Laufen 16.10 ...
hfrmobile

30

Es ist nicht in der Manpage dokumentiert, aber ein kurzer Blick auf die Quelle bestätigt die erste Vermutung:

  • +: Der Dienst wird ausgeführt
  • -: Der Dienst wird nicht ausgeführt
  • ?: Der Servicestatus kann (aus irgendeinem Grund) nicht ermittelt werden.

Der eigentliche Code :

 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

Die Bedingungen sind:

  • Wenn das Init-Skript keinen statusBefehl unterstützt, lautet der Status ?.
  • Wenn der Beendigungsstatus des Init-Skripts (mit dem statusArgument) Null ist und die Ausgabe nicht leer ist, lautet der Status +.
  • Ansonsten ist der Staat -.

1

Ich glaube, das +bedeutet , dass der Dienst aktiv ist / läuft, -dass er inaktiv ist / gestoppt ist und ?dass der Befehl nicht endgültig bestimmen kann, ob er aktiv ist oder nicht, da der Dienst keinen statusBefehl im Dienstskript hat. Der service --status-allBefehl wird tatsächlich service <service-name> statusfür jeden verfügbaren Dienst ausgeführt.


0

Ich finde, dass Laufen mit / ohne sudoeinen Unterschied macht.

Einige Dienste in /var/run/haben nur Lesezugriff auf den Root-Benutzer. Diese Dienste zeigen den Status [-]ohne sudound [+]mit sudo.


1
Bist du sicher? Einige Servicestatus ändern sich dynamisch. Vielleicht sehen Sie nur Variationen
Zanna
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.