Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在linux中使用连字符的pgrep程序?_Grep - Fatal编程技术网

在linux中使用连字符的pgrep程序?

在linux中使用连字符的pgrep程序?,grep,Grep,如何表示包含连字符的程序?像贝娄一样考虑情况 c源文件名,程序包含hypen.c: #include <stdio.h> int main(int argc, char *argv[]) { getchar(); return 0; } 更新: 这不是连字符的问题,而是命令行的长度问题 看 多亏了@user5631389,我想你已经回答了你自己的问题。pgrep-f是实现这一点的正确方法。如果得到两个结果,则有两个同名的正在运行的进程。您可以使用pgrep-fa查看

如何表示包含连字符的程序?像贝娄一样考虑情况

c源文件名,
程序包含hypen.c

#include <stdio.h>
int main(int argc, char *argv[])
{
    getchar();
    return 0;
}
更新:

这不是连字符的问题,而是命令行的长度问题


多亏了@user5631389,我想你已经回答了你自己的问题。pgrep-f是实现这一点的正确方法。如果得到两个结果,则有两个同名的正在运行的进程。您可以使用pgrep-fa查看整个命令行。例如:

$ 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
如果没有-f,您将只能根据需要使用一定数量的字符。例如:

$ 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
$pgrep统一作用域加载器
$pgrep统一作用域加载
$pgrep统一作用域加载
$pgrep统一范围loa
9489
$pgrep-f统一作用域加载器
9489
$pgrep-fa统一作用域加载器
9489/usr/bin/unity scope loader applications/applications.scope applications/scopes.scope commands.scope

$awk'$11~/unity scope loader/{print$2}'两个正在运行的进程:
/program包含连字符
vim program包含连字符.c
;似乎不是连字符的问题,而是命令行的长度?和
cat/proc/xxx/comm
我得到的
程序包含
,正好是15个字符。与1234567890123456问题相同。是的,这是正确的。不带-f选项的pgrep以将文件名截断为15个字符的方式查找进程。我不相信这与进程名中的连字符有任何关系。谢谢,我正在尝试在我的嵌入式linux上使用
别名pgrep='busybox pgrep'
,因为
busybox
知道我想要什么,而且
busybox
总是在那里。我不想检查哪个
pgrep
正在使用(
busybox
procps ng
)。