You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS7.7中Shell脚本执行pgrep/ps命令多匹配PID问题及解决

CentOS 7.7 脚本执行进程查询返回多余PID的问题解决

问题现象

  • 终端直接执行pgrep -f 'process_name',仅返回目标进程PID 19737
  • 将该命令写入Shell脚本执行时,返回两个PID:19737和10324
  • 执行ps -ef | grep -v grep | grep 'process_name' | awk '{print $2}'时,终端输出1个PID,脚本执行却得到3个PID

原因分析

脚本运行时,Shell会创建子进程执行查询命令,而pgrep -f会匹配整个命令行参数,grep也会匹配到脚本进程的命令行(因为脚本中包含了process_name关键词),因此会额外返回脚本自身或其子进程的PID。

解决方案

使用pgrep的-U参数指定目标进程所属的用户ID,精准过滤出该用户下的目标进程,避免匹配到脚本相关进程:

pgrep -U 'process_uid' -f 'process_name'

内容的提问来源于stack exchange,提问作者khm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 06:43:12