如何在ps命令中使用正则表达式查询chromium相关进程?
原命令失败原因
你之前执行的命令无法得到结果有两个核心原因:
ps的-C参数仅支持精确匹配进程名,不支持通配符、正则语法- 未加引号的
chromi*会被shell优先执行通配符展开,替换为当前目录下所有以chromi开头的文件名,不会作为匹配规则传给ps
可行实现方案
方案1:ps + grep 组合(全平台通用,兼容性最好)
直接通过grep完成正则匹配,推荐写法:
ps aux | grep '[c]hromi'
将匹配关键词的首字母放在中括号里,可以自动过滤掉grep自身的进程,无需额外加grep -v grep。如果需要更复杂的匹配规则,直接写对应的正则即可,比如匹配带渲染进程标识的chromium进程:
ps aux | grep '[c]hromi.*--type=renderer'
方案2:pgrep + ps 组合(写法更简洁)
pgrep本身原生支持正则匹配规则:
- 仅匹配进程名(comm字段),输出符合条件的进程ID:
pgrep '^chromi' - 匹配完整命令行内容,输出符合条件的进程ID:
pgrep -f 'chromi' - 需要输出进程的详细运行信息,将pgrep的结果传给ps即可:
ps -fp $(pgrep -f 'chromi')
方案3:ps自带正则匹配(仅适用于procps-ng版本的ps,常见于Linux发行版)
部分版本的ps支持--regex参数直接做正则匹配,比如:
ps -eo pid,user,cmd --regex '.*chromi.*'
内容的提问来源于stack exchange,提问作者user13887828
相关产品推荐
相关产品推荐

