我正在尝试在 Unix 中检索多个服务状态的列表。我正在使用service
命令:man page。
例如,状态都以transmission-daemon
字符串开头。
我需要能够使用单个命令列出多个服务的状态。这是我目前正在尝试(并失败)的内容:
在这里,我尝试使用grep
.
service $(ls /etc/init.d | grep "transmission-daemon") status
Run Code Online (Sandbox Code Playgroud)
在这里,我试图列出所有状态,然后列出grep
它们。
service --status-all | grep "transmission-daemon"
Run Code Online (Sandbox Code Playgroud)
这会产生以下内容,但没有多大帮助:
如何使用单个命令有效地实现我的要求,以便我可以继续管道以awk
进行进一步的定制?
所需的示例输出:
transmission-daemon started
transmission-daemon2 stopped
transmission-daemon3 started
Run Code Online (Sandbox Code Playgroud)
我没什么好说的,除了:
ls | grep
事情在我看来真的很尴尬和错误为了解决您的grep
问题,是service
输出到stderr吗?将stderr重定向到stdout怎么样?
service --status-all 2>&1 | grep "transmission-daemon"
Run Code Online (Sandbox Code Playgroud)(但这样做对我来说似乎也很尴尬和错误)。
显然您想使用status命令运行您的服务,对吗?像这样使用bash怎么样:
#!/bin/bash
shopt -s nullglob
for s in /etc/init.d/transmission-daemon* ; do
service "$(basename "$s")" status
done
Run Code Online (Sandbox Code Playgroud)
在一行中:
bash -c 'shopt -s nullglob; for s in /etc/init.d/transmission-daemon* ; do service "$(basename "$s")" status; done'
Run Code Online (Sandbox Code Playgroud)
这给出:
希望这会让您走上正确的轨道(或至少走上更好的轨道)!
归档时间: |
|
查看次数: |
5515 次 |
最近记录: |