“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

그리고 sudo 로이 명령을 실행하면 차이가 있습니까? 나는 그것을 시도했고 내 경우에는 아무런 차이가 없었지만 다른 설정에서는 다를 수 있습니까?

답변:


106

의 출력은에 service --status-all의해 제어되는 서비스 상태 를 나열합니다 System V.

+, 서비스가 실행되고 있음을 나타냅니다 -중지 된 서비스를 나타냅니다. 및 서비스를 실행 service SERVICENAME status하여 이를 확인할 수 있습니다 .+-

일부 서비스는에서 관리합니다 Upstart. 로 모든 Upstart서비스 의 상태를 확인할 수 있습니다 sudo initctl list. 에서 관리하는 모든 서비스 Upstart는 또한 제공 한 목록에 service --status-all표시되지만으로 표시됩니다 ?.

참고: man service


2
관심이있을 수 있습니다 : 서비스에 대한 출력이 표시 -+표시 서비스에 대한 표준 출력, 출력로 이동합니다 ?stderr로 이동합니다.
dave1010

1
"Upstart가 관리하는 모든 서비스는 service --status-all에서 제공 한 목록에도 표시되지만?로 표시됩니다." 이것은 사실이 아닙니다. 서버에서 두 명령을 모두 시도했습니다. service --status-all43 개의 서비스를 제공합니다. initctl list그 중 93 개만 중복됩니다.
Andrew Ensley

내 Ubuntu 시스템에 "업 스타트 서비스"가 "?"로 표시되지 않습니다 에 의해 서비스 --status-모든
hfrmobile

@hfrmobile이 아직 14.04에 있지 않거나 부팅시 Upstart'systemd' 를 사용하도록 지정하지 않는 한 . 더 이상 "?"가 표시되지 않습니다 내 16.04 시스템에서.
Sean

실행 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명령을 지원하지 않으면 상태는 ?입니다.
  • init 스크립트 ( status인수가있는) 종료 상태가 0 이고 출력이 비어 있지 않은 경우 상태는 +입니다.
  • 그렇지 않으면 상태는 -입니다.

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.