我正在尝试使用ps -o命令获取有关与特定名称匹配的进程的特定信息。但是,我遇到了一些问题,当我尝试使用它来获取所有进程时,就像这样,它只返回正常ps -ef
将返回的子集(它几乎不会返回相同数量的结果,因此它不会返回所有正在运行的进程)
ps -ef -o pid,time,comm
我想尝试类似这样的事情(下面),但是将ps -o合并到其中以获取特定信息(仅限PID)
ps -ef |grep `whoami`| grep firefox-bin
对于如何正确执行此操作,我们非常感谢您的建议,谢谢
答案 0 :(得分:93)
这将按名称获取进程的PID:
pidof name
然后您可以将其重新插入ps以获取更多详细信息:
ps -p $(pidof name)
答案 1 :(得分:25)
这有点旧,但我想你想要的是:ps -o pid -C PROCESS_NAME,例如:
ps -o pid -C bash
编辑:根据您期望的输出类型,pgrep
会更优雅。据我所知,这是特定于Linux的,并且产生与上面类似的输出。例如:
pgrep bash
答案 2 :(得分:10)
ps -fC PROCESSNAME
ps和grep是一个危险的组合 - grep尝试匹配每一行的所有内容(因此太常见了:grep -v grep hack)。 ps -C不使用grep,它使用进程表进行精确匹配。因此,您将获得一个准确的列表:ps -fC sh而不是在线上找到每个进程。
答案 3 :(得分:4)
有时您需要按名称grep进程 - 在这种情况下:
add_filter('nav_menu_item_id', '__return_false');
示例输出:
ps aux | grep simple-scan
答案 4 :(得分:0)
抱歉,聚会晚了很多,但是我要在这里补充一下,如果您想捕获名称与搜索字符串相同的进程,则可以这样做
pgrep -x PROCESS_NAME
-x Require an exact match of the process name, or argument list if -f is given. The default is to match any substring.
如果原始流程创建了子流程(在查询时可能是僵尸),而这些子流程在其原始名称前加上了原始流程的名称,并且您试图将其从结果中排除,则此功能非常有用。有许多执行此操作的UNIX守护程序。我的首选示例是 ninja-dev-sync 。