วิธีอ่านผลลัพธ์“ บริการ - สถานะ - ทั้งหมด”


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

และจะใช้คำสั่งนี้ด้วย sudo สร้างความแตกต่างหรือไม่ ฉันลองและในกรณีของฉันมันไม่ได้สร้างความแตกต่าง แต่มันอาจแตกต่างกันในการตั้งค่าอื่น ๆ ?

คำตอบ:


106

การส่งออกของรายการสถานะของบริการที่ควบคุมโดยservice --status-allSystem V

+บ่งชี้บริการที่ทำงาน, -บ่งชี้บริการหยุด คุณสามารถเห็นสิ่งนี้ได้ด้วยการวิ่งservice SERVICENAME statusหา+และ-บริการ

Upstartบริการบางอย่างมีการจัดการโดย คุณสามารถตรวจสอบสถานะของUpstartบริการทั้งหมดsudo initctl listได้ บริการใด ๆ การจัดการโดยUpstartจะแสดงในรายการที่มีให้โดยแต่จะถูกทำเครื่องหมายด้วยservice --status-all?

อ้างอิง: man service


2
อาจเป็นที่สนใจ: เอาต์พุตสำหรับบริการที่ทำเครื่องหมาย-& +จะไปที่ stdout เอาท์พุทสำหรับบริการที่ทำเครื่องหมายไว้?จะไปที่ stderr
dave1010

1
"บริการใด ๆ ที่จัดการโดย Upstart จะแสดงในรายการที่ให้บริการ - สถานะทั้งหมด แต่จะถูกทำเครื่องหมายด้วย?" นี่ไม่เป็นความจริงอย่างเคร่งครัด เพิ่งลองทั้งคำสั่งบนเซิร์ฟเวอร์ service --status-allให้บริการ 43 ฉัน initctl listให้ฉัน 93. 93 ชิ้นเท่านั้นที่ซ้ำกัน
แอนดรูว์ Ensley

เครื่อง Ubuntu ของฉันไม่แสดงรายการ "บริการพุ่งพรวด" เป็น "?" โดย บริการ - สถานะทั้งหมด
hfrmobile

@hfrmobile เว้นเสียแต่ว่าคุณจะยังคงอยู่ที่ 14.04 หรือระบุตอนบูทเพื่อใช้งานUpstartคุณกำลังใช้ 'systemd' ตอนนี้ ฉันไม่เห็น "?" อีกต่อไป ในระบบ 16.04 ของฉัน
ฌอน

ทำงาน 16.10 ...
hfrmobile

30

มันไม่ได้จัดทำเป็นเอกสารไว้ใน manpage แต่การดูแหล่งที่มาอย่างรวดเร็วเป็นการยืนยันการเดาแรก:

  • +: บริการกำลังทำงานอยู่
  • -: บริการไม่ทำงาน
  • ?: ไม่สามารถระบุสถานะบริการ (ด้วยเหตุผลบางอย่าง)

รหัสจริง :

 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?
  • ถ้าสคริปต์ init (ที่มีstatusการโต้แย้ง) สถานะออกเป็นศูนย์และ+การส่งออกไม่ว่างเปล่าของรัฐคือ
  • -มิฉะนั้นรัฐคือ

1

ฉันเชื่อว่า+หมายความว่าบริการนั้นกำลังทำงานอยู่ / กำลังทำงาน-หมายความว่าบริการไม่ทำงาน / หยุดทำงานและ?หมายความว่าคำสั่งไม่สามารถระบุได้อย่างชัดเจนว่าบริการนั้นเปิดใช้งานอยู่หรือไม่เนื่องจากบริการไม่มีstatusคำสั่งในสคริปต์บริการ service --status-allคำสั่งจริงทำงานservice <service-name> statusสำหรับการให้บริการที่มีอยู่ทุก


0

ฉันพบว่าการวิ่งโดยมี / ไม่มีการsudoสร้างความแตกต่าง

บริการบางอย่าง/var/run/มีสิทธิ์เข้าถึงแบบอ่านได้เฉพาะผู้ใช้รูท บริการเหล่านั้นแสดงสถานะ[-]โดยไม่ต้องsudoและมี[+]sudo


1
คุณแน่ใจไหม? สถานะการบริการบางอย่างเปลี่ยนแปลงแบบไดนามิก บางทีคุณอาจจะเห็นการเปลี่ยนแปลง
Zanna
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.