/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完全在内核中处理;初始化脚本仅加载必要的配置文件。