如何pgrep程序包含连字符?考虑像波纹管这样的情况。
c源文件名program-contains-hypen.c
:
#include <stdio.h>
int main(int argc, char *argv[])
{
getchar();
return 0;
}
然后继续使用vim
进行编辑,并在另一个终端中运行已编译的program-contains-hypen
。
此时,如果我使用pgrep program-contains-hypen
,则没有任何结果;如果我使用pgrep -f program-contains-hypen
,则会得到两个结果。
如何准确获取程序program-contains-hypen
的pid?
PS:
$ pgrep --version
pgrep from procps-ng 3.3.10
更新
这不是连字符的问题,而是命令行的长度。
请参阅https://askubuntu.com/questions/361104/pgrep-pattern-length-limit。
感谢@ user5631389
答案 0 :(得分:2)
我想你已回答了自己的问题。 pgrep -f是执行此操作的正确方法。如果您获得两个结果,则有两个具有该名称的正在运行的进程。您可以使用pgrep -fa查看整个命令行。例如:
如果没有-f,您只能根据https://askubuntu.com/questions/361104/pgrep-pattern-length-limit使用一定数量的字符。例如:
$ pgrep unity-scope-loader
$ pgrep unity-scope-loade
$ pgrep unity-scope-load
$ pgrep unity-scope-loa
9489
$ pgrep -f unity-scope-loader
9489
$ pgrep -fa unity-scope-loader
9489 /usr/bin/unity-scope-loader applications/applications.scope applications/scopes.scope commands.scope
$ awk '$11~/unity-scope-loader/{print $2}' <(ps aux)
9489