Cara membaca hasil "service --status-all"


98

Saya perlu mengidentifikasi layanan yang sedang berjalan tetapi saya tidak dapat mengetahui hasil dari menjalankan service --status-all, maksud saya apa ? , - dan + rata-rata?

$ 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

Dan apakah menjalankan perintah ini dengan sudo akan membuat perbedaan? Saya mencobanya dan dalam kasus saya tidak ada bedanya, tetapi mungkin berbeda di pengaturan lain?

Jawaban:


106

Output dari service --status-alldaftar kondisi layanan yang dikendalikan oleh System V.

The +menunjukkan layanan ini berjalan, -menunjukkan layanan berhenti. Anda dapat melihat ini dengan menjalankan service SERVICENAME statusuntuk +dan -layanan.

Beberapa layanan dikelola oleh Upstart. Anda dapat memeriksa status semua Upstartlayanan dengan sudo initctl list. Setiap layanan yang dikelola oleh Upstartjuga akan ditampilkan dalam daftar yang disediakan oleh service --status-alltetapi akan ditandai dengan a ?.

Referensi: man service


2
Mungkin menarik: output untuk layanan yang ditandai -& +akan menuju stdout, output untuk layanan yang ditandai ?akan menuju stderr.
dave1010

1
"Setiap layanan yang dikelola oleh Pemula juga akan ditampilkan dalam daftar yang disediakan oleh layanan --status-semua tetapi akan ditandai dengan?" Ini tidak sepenuhnya benar. Baru saja mencoba kedua perintah di server. service --status-allmemberi saya 43 layanan. initctl listmemberi saya 93. Hanya segelintir dari 93 yang merupakan duplikat.
Andrew Ensley

Mesin Ubuntu saya tidak mencantumkan "Layanan pemula" sebagai "?" oleh layanan --status-all
hfrmobile

@ hfrmobile kecuali Anda masih di 14,04 atau tentukan pada saat boot untuk menggunakan UpstartAnda menggunakan 'systemd' sekarang. Saya juga tidak lagi melihat "?" pada sistem 16.04 saya.
Sean

menjalankan 16.10 ...
hfrmobile

30

Itu tidak didokumentasikan di halaman manual, tetapi pandangan cepat pada sumber mengkonfirmasi dugaan pertama:

  • +: layanan sedang berjalan
  • -: layanan tidak berjalan
  • ?: status layanan tidak dapat ditentukan (karena alasan tertentu).

Kode aktual :

 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

Syaratnya adalah:

  • jika skrip init tidak mendukung statusperintah, maka statusnya adalah ?.
  • jika skrip init (dengan statusargumen) status keluar adalah nol dan output tidak kosong, keadaannya adalah +.
  • kalau tidak, negara -.

1

Saya percaya itu +berarti layanan aktif / berjalan, -berarti tidak aktif / berhenti, dan ?berarti bahwa perintah tidak dapat secara meyakinkan menentukan apakah itu aktif atau tidak, karena layanan tidak memiliki statusperintah dalam skrip layanan. The service --status-allperintah benar-benar berjalan service <service-name> statusuntuk setiap layanan yang tersedia.


0

Saya menemukan bahwa berjalan dengan / tanpa sudomembuat perbedaan.

Beberapa layanan di hanya /var/run/memiliki akses baca ke pengguna root. Layanan tersebut menunjukkan status [-]tanpa sudo, dan [+]dengan sudo.


1
Apakah kamu yakin beberapa status layanan berubah secara dinamis; mungkin Anda hanya melihat variasi
Zanna
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.