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

Linux下如何仅筛选出状态为"R"的后台脚本进程?

只筛选状态为"R"的test.sh进程

嘿,我之前处理过类似的场景!当你用ps aux | grep test.sh的时候,很容易把之前终止但状态为"T"(停止状态)的旧进程也捞出来,想要只拿到正在运行(状态"R")的进程,其实有几种更精准的方式:

方法1:用awk直接过滤ps输出

你可以借助awk定位进程状态列(ps aux里第8列是STAT字段),同时匹配进程名并排除grep自身:

ps aux | awk '$8 == "R" && $0 ~ /test.sh/ && !/grep/'
  • $8 == "R":只保留状态为运行态的进程
  • $0 ~ /test.sh/:确保进程和test.sh相关
  • !/grep/:排除掉执行grep命令的自身进程

方法2:用ps内置选项精准定位进程

这种方法更高效,因为直接让ps只找命令名为test.sh的进程,不需要额外过滤grep:

ps -C test.sh --no-headers -o pid,stat,cmd | awk '$2 == "R"'
  • -C test.sh:告诉ps只查找命令名为test.sh的进程
  • --no-headers:去掉表头输出,只留进程数据
  • -o pid,stat,cmd:指定只输出进程ID、状态和命令行信息,精简输出
  • 最后用awk筛选状态为"R"的行

如果需要完整的ps aux格式输出,也可以调整成:

ps aux -C test.sh | awk '$8 == "R"'

这样既保留了aux的输出格式,又精准过滤了状态为R的test.sh进程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:57:37