答案1
service --status-all
在 STDOUT(文件描述符 1)和 STDERR(文件描述符 2)上显示其输出,其中可以在 STDOUT 上确定状态的服务(由[+]
或表示[-]
)和无法在 STDERR 上确定状态的服务(由 表示[?]
)。
在执行时service --status-all | grep mysql
,您仅运行grep
的 STDOUT service --status-all
,这就是为什么 STDERR 上显示的所有内容都会显示出来(以及的可能输出grep
)。
为了仅获得所需的结果,请将运行重定向将 STDOUT 和 STDERR 重定向到grep
:
service --status-all |& grep mysql
测试:
看看里面的标志[]
:
% service --status-all >/dev/null ## Discarding STDOUT
[ ? ] apport
[ ? ] binfmt-support
[ ? ] console-setup
[ ? ] dns-clean
[ ? ] irqbalance
[ ? ] killprocs
[ ? ] kmod
[ ? ] lightdm
[ ? ] mysql
% service --status-all 2>/dev/null ## Discarding STDERR
[ + ] acpid
[ - ] anacron
[ - ] apparmor
[ + ] atd
[ + ] atop
[ + ] avahi-daemon
[ + ] bluetooth
[ - ] brltty
[ + ] cron