如何阅读“service –status-all”结果
我需要确定当前正在运行的服务,但我无法弄清楚运行service --status-all
的结果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运行这个命令会有什么不同吗? 我试过了,在我的情况下,它没有任何区别,但可能在其他设置上有所不同?
service --status-all
输出service --status-all
列出了System V
控制的服务状态。
+
表示服务正在运行, -
表示已停止的服务。 您可以通过运行+
和-
服务的service SERVICENAME status
来查看此信息。
有些服务由Upstart
管理。 您可以使用sudo initctl list
检查所有Upstart
服务的状态。 由Upstart
管理的任何服务也将显示在service --status-all
提供的列表中service --status-all
但会标记为?
。
参考: man service
它没有在联机帮助页中记录,但快速查看源代码确认了第一个猜测:
-
+
:服务正在运行 -
-
:服务没有运行 -
?
:无法确定服务状态(由于某种原因)。
实际代码 :
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
参数)退出状态为零且输出不为空,则状态为+
。 - 否则国家是
-
。
我相信+
意味着服务处于活动/运行状态, -
意味着它处于非活动/停止状态,并且?
表示该命令无法确定是否处于活动状态,因为该服务在服务脚本中没有status
命令。 service --status-all
命令实际上为每个可用服务运行service
。
我发现使用/不使用sudo
运行会产生影响。
/var/run/
某些服务只对root用户具有读访问权限。 这些服务显示状态[-]
没有sudo
, [+]
显示sudo
。