Jak czytać wyniki „service --status-all”

98

Muszę zidentyfikować aktualnie uruchomione usługi, ale nie mogę dowiedzieć się, jakie są ich wyniki service --status-all, mam na myśli, co to znaczy ? , - i + oznacza?

$ 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

Czy uruchomienie tego polecenia w sudo miałoby jakąkolwiek różnicę? Próbowałem i w moim przypadku nie miało to znaczenia, ale czy może różnić się w innych konfiguracjach?

Muhammad Gelbana
źródło

Odpowiedzi:

106

Dane wyjściowe service --status-alllist stanu kontrolowanych przez System V.

+Wskazuje, że usługa jest uruchomiona, -wskazuje zatrzymane usługi. Można to zobaczyć uruchamiając service SERVICENAME statusdla A +i -usług.

Niektóre usługi są zarządzane przez Upstart. Możesz sprawdzić status wszystkich Upstartusług za pomocą sudo initctl list. Każda usługa zarządzana przez Upstartbędzie również wyświetlana na liście dostarczonej przez, service --status-allale będzie oznaczona symbolem ?.

Odniesienie: man service

Sean
źródło
2
Może być interesujące: wynik dla usług oznaczonych -i +przejdzie do standardowego wyjścia, wynik dla usług oznaczonych ?przejdzie do standardowego.
dave1010
1
„Jakakolwiek usługa zarządzana przez Upstart będzie również wyświetlana na liście udostępnianej przez usługę - status-all, ale będzie oznaczona znakiem?”. To nie jest do końca prawda. Właśnie wypróbowałem oba polecenia na serwerze. service --status-alldaje mi 43 usługi. initctl listdaje mi 93. Tylko garstka z tych 93 to duplikaty.
Andrew Ensley,
Mój komputer Ubuntu nie wyświetla „Upstart services” jako „?” przez serwis --status-all
hfrmobile
@hfrmobile, chyba że nadal korzystasz z 14.04 lub nie określisz podczas uruchamiania, że ​​używasz Upstartteraz 'systemd'. Nie widzę też „?” w moim systemie 16.04.
Sean,
uruchomiony 16.10 ...
hfrmobile
30

Nie jest to udokumentowane na stronie podręcznika, ale szybkie spojrzenie na źródło potwierdza pierwsze przypuszczenie:

  • +: usługa jest uruchomiona
  • -: usługa nie działa
  • ?: z jakiegoś powodu nie można ustalić stanu usługi.

Rzeczywisty kod :

 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

Warunki są następujące:

  • jeśli skrypt init nie obsługuje statuspolecenia, stan to ?.
  • jeśli statusstatus wyjścia skryptu inicjującego (z argumentem) wynosi zero, a dane wyjściowe nie są puste, to stan to +.
  • w przeciwnym razie stan jest -.
muru
źródło
1

Uważam, że +oznacza to, że usługa jest aktywna / działa, -oznacza, że ​​jest nieaktywna / zatrzymana, i ?oznacza, że ​​polecenie nie może jednoznacznie ustalić, czy jest aktywne, czy nie, ponieważ usługa nie ma statuspolecenia w skrypcie usługi. service --status-allKomenda faktycznie działa service <service-name> statusdla każdej dostępnej usługi.

Arroniczny
źródło
0

Uważam, że bieganie z / bez sudorobi różnicę.

Niektóre usługi /var/run/mają dostęp tylko do odczytu dla użytkownika root. Usługi te pokazują status [-]bez sudoi [+]z sudo.

user663581
źródło
1
Jesteś pewny? niektóre statusy usług zmieniają się dynamicznie; może właśnie widzisz wariację
Zanna