如何解释服务命令输出

如何解释服务命令输出
/usr/sbin/service --status-all 

 [ ? ]  alsa-utils
 [ - ]  anacron
 [ + ]  apparmor
 [ + ]  bluetooth
 [ - ]  bootlogd
[...]

apparmor 服务看起来正在运行,对吗?但:

/usr/sbin/service apparmor status | grep apparmor

apparmor module is loaded.

我的问题:我可以理所当然地认为 apparmor 服务正在运行(因为它已加载到内核中)。有什么办法可以加载但不能运行,或者不能正常运行吗?

我问这个问题是因为,当使用脚本并且您想知道特定服务是否正在运行或失败时,使用它更容易

/usr/sbin/service "${SERVICE}" status | grep "${SERVICE}" 

(我 grep 得到一个简短的答案)比

/usr/sbin/service --status-all

后面的命令给出了很难操作的批量输出。我当然错过了一些东西,但服务手册页中几乎没有任何内容。

大家有什么想法吗?

答案1

service您应该检查 的退出代码,而不是查看输出:

if service apparmor status >&/dev/null; then echo AppArmor is loaded and enabled; fi

这需要以 root 身份运行才能提供准确的结果。

是的,鉴于您问题中的输出被截断,AppArmor 已加载并启用。没有相应的进程,因为AppArmor完全在内核中处理;初始化脚本仅加载必要的配置文件。

相关内容