Як читати результати "service --status-all"


98

Мені потрібно ідентифікувати поточні послуги, але я не можу з’ясувати результати роботи service --status-all, я маю на увазі, що робить ? , - і + означає?

$ 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

І чи змінила би ця команда з судо? Я спробував це, і в моєму випадку це нічого не змінило, але чи може він відрізнятися в інших налаштуваннях?

Відповіді:


106

Вихідні дані service --status-allперелічують стан послуг, що контролюються System V.

+Вказує , що служба запущена, -вказує на зупиненої служби. Ви можете побачити це, запустивши service SERVICENAME statusдля а +і -обслуговування.

Деякими службами керує компанія Upstart. Ви можете перевірити стан усіх Upstartслужб sudo initctl list. Будь-яка послуга, якою керує Upstart, також відображатиметься у списку, наданому, service --status-allале буде позначена символом ?.

Довідка: man service


2
Може представляти інтерес: вихід для служб, позначених -& +перейде до stdout, вихід для послуг, позначених ?, перейде до stderr.
dave1010

1
"Будь-яка служба, керована Upstart, також відображатиметься у списку, наданому службою --status-all, але буде позначена знаком". " Це не зовсім суто. Просто спробували обидві команди на сервері. service --status-allнадає мені 43 послуги. initctl listдає мені 93. Тільки жменька з цих 93 - це дублікати.
Ендрю Енслі

Мій апарат Ubuntu не відображає "Служби Upstart" як "?" від служби --status-all
hfrmobile

@hfrmobile, якщо ви ще не перебуваєте на 14.04 або не вкажіть час завантаження для використання, Upstartви використовуєте "systemd" зараз. Я також більше не бачу "?" на моїй системі 16.04.
Шон

працює 16.10 ...
hfrmobile

30

Це не зафіксовано на сторінці сторінки, але швидкий погляд на джерело підтверджує першу здогадку:

  • +: служба працює
  • -: служба не працює
  • ?: стан обслуговування не може бути визначений (чомусь).

Фактичний код :

 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

Умови такі:

  • якщо скрипт init не підтримує statusкоманду, стан є ?.
  • якщо statusстан виходу скрипта init (з аргументом) дорівнює нулю, а вихід не порожній, стан є +.
  • інакше держава є -.

1

Я вважаю, що це +означає, що служба активна / запущена, -це означає, що вона неактивна / зупинена, і це ?означає, що команда не може остаточно визначити, активна вона чи ні, оскільки служба не має statusкоманди в скрипті служби. service --status-allКоманда на насправді працює service <service-name> statusдля всіх доступних послуг.


0

Я вважаю, що біг з / без sudoмає значення.

Деякі служби в програмі /var/run/мають доступ до читання лише для кореневого користувача. Ці служби показують статус [-]без sudoі [+]з sudo.


1
Ти впевнений? деякі статуси обслуговування динамічно змінюються; можливо ви просто бачите варіацію
Zanna
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.