我需要识别当前正在运行的服务,但我无法弄清楚运行的结果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 运行此命令会有什么不同吗?我试过了,在我的例子中没有任何区别,但在其他设置中可能会有所不同吗?
答案1
的输出service --status-all
列出了 控制的服务的状态System V
。
表示+
服务正在运行,-
表示服务已停止。您可以通过运行和服务service SERVICENAME status
来查看。+
-
某些服务由 管理。您可以使用 检查所有服务Upstart
的状态。由 管理的任何服务也将显示在 提供的列表中,但会标有。Upstart
sudo initctl list
Upstart
service --status-all
?
参考:man service
答案2
它没有记录在手册页中,但快速查看源代码证实了第一个猜测:
+
:服务正在运行-
:该服务未运行?
:无法确定服务状态(由于某种原因)。
实际代码:
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
条件是:
- 如果初始化脚本不支持某个
status
命令,则状态为?
。 - 如果初始化脚本(带有参数
status
)的退出状态为零和输出不为空,状态为+
。 - 否则,该状态就是
-
。
答案3
我发现有/没有跑步sudo
会产生不同的效果。
中的某些服务/var/run/
仅对 root 用户具有读取权限。这些服务显示的状态[-]
不为sudo
,而[+]
为sudo
。
答案4
我认为这+
意味着服务处于活动状态/正在运行,-
意味着服务处于非活动状态/已停止,意味着命令无法确定服务是否处于活动状态,因为服务在服务脚本中?
没有命令。该命令实际上针对每个可用服务运行。status
service --status-all
service <service-name> status