我正在尝试查找特定的服务,但对此命令有疑问:
service --status-all | grep worker
为何不起作用service --status-all | grep ...
?
答案1
这里可能存在两个问题之一。
要么你没有名为 worker 的进程 - 我没有。尝试 grep
kill
或dm
- 你应该会看到一些内容。您会看到所有这些。这是因为它提供了许多单独的输出,而不仅仅是 1 个输出。
每一行都是单独打印的,并且不是
stderr
。stdout
您有 2 个选择。重定向到一个文件,如下所示:
service --status-all > allout.txt 2>&1
所有输出将保存在名为的文件中
allout.txt
。然后你可以 cat 和 grep 该文件:cat allout.txt | grep worker
可以将其组合为一个命令:
service --status-all > allout.txt 2>&1 && cat allout.txt | grep worker
将 stderr 重定向到
/dev/null
,并 grepstdout
:service --status-all 2>&1 > /dev/null | grep worker
这两个都给出相同的输出:
tim@Hairy14:~$ service --status-all > allout.txt 2>&1 && cat allout.txt | grep kill [ ? ] killprocs
和
tim@Hairy14:~$ service --status-all 2>&1 > /dev/null | grep kill [ ? ] killprocs
答案2
您可以轻松使用 hack doubleTab
一旦你运行:
sudo service wo
然后双击Tab此命令将自动完成或列出以wo
如果你的终端支持颜色,你仍然可以使用 grep
例如,这是对我的服务的测试:
service --status-all | grep vnstat
答案3
使用:
service --status-all |& grep worker
service --status-all | grep vnstat