Answers:
在一般情况下,似乎你不能真正做到这一点,不使用grep作为辅助或管道/ shelling到第二个第二个linux命令来帮助。如果您尝试通过启动其他语言的流程来执行此操作,例如Java,您可能需要避免使用任何shellism,因此需要执行一个命令。因此考虑 p纤ep 作为备选。例如列出所有java进程:
pgrep java
一种简单的方法来过滤输出 ps
是使用一般可以过滤输入的工具, grep
。
要做到这一点,我们只是 管 的输出 ps
进入grep,就像这样:
oliver@cloud:~$ ps | grep bash
31131 pts/0 00:00:00 bash
如果你正在上市 所有 过程,你会很快遇到一个问题:
oliver@cloud:~$ ps a | grep bash
2729 pts/0 S+ 0:00 grep bash
31131 pts/0 Ss 0:00 -bash
现在它又回来了 grep
本身也是!我们该如何解决?
只需使用 grep
再次 ,过滤掉多余的结果:
oliver@cloud:~$ ps a | grep bash | grep -v grep
31131 pts/0 Ss 0:00 -bash
< -OSX->通过匹配二进制又名COMMAND名称获得运行二进制文件的PID,称为Humans。
helios:~TimberWolf $ killall -s人类
- >只是数字
helios:~TimberWolf $ killall -s Humans | tr -d [:alpha:] [:space:] -
- >使用带ps命令的PID可以获得更精细的细节,例如二进制的优先级。
helios:~TimberWolf $ ps killall -s Humans | tr -d [:alpha:][:space:]-
killall -s Humans|awk '{print $3}'
我遇到了同样的问题。这是一个解决方案,并不完全令人满意:
ps -p `pidof <command_name> | tr ' ' ','`
这不会一直有效(例如,当命令名实际上是对解释器的调用时),而且相当丑陋。我希望它可以提供想法并产生更好的解决方案!
ps | grep command_name