如何在ps中使用"Regular Expression"?

How to use "Regular Expression" in ps?

我正在尝试使用

 ps -C chromi* 

查看所有 chromium 进程,但没有成功。我如何在这里使用正则表达式?

How to use "Regular Expression" in ps?

不能,ps不支持正则表达式。参数按字面意思解析。

How to use "Regular Expression" in ps?

您可以修补 procps ps 来支持它,很可能(还有另一个!)附加标志。补丁看起来很简单,基本上是另一个使用 regex.h 而不是 strncmptree traversing parse_* 函数。

我怀疑这样的补丁会成为上游 - 通常使用其他工具,最值得注意的是 pgrep 或 shell 管道和 grep,通过命令行过滤进程姓名。 ps 必须保持 POSIX 兼容,并且已经有很多选择。

请注意,正则表达式不是“通配符”。咨询 man 7 globman 7 regex。正则表达式 chromi* 将匹配 chromchromiiiii - chrom 后跟零个或多个 i.

请注意,带有“触发”字符的不带引号的参数会进行文件名扩展(ls 'chromi*'ls chromi*)。这与存在匹配模式的文件时传递文字参数不同。如果打算将模式传递给工具,请引用参数以防止文件名扩展。

我想你在找 pgrep:

pgrep -f chromium

这将只打印 pids,没有更多信息。

xargs 的帮助下,这可以再次通过管道传输到 ps 以获得详细输出:

pgrep -f chromium | xargs ps -o pid,cmd,user,etime -p