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

如何从/proc/[pid]/status中仅读取指定的进程状态数据

提取指定PID进程的名称与状态

要从/proc/<PID>/status文件里提取进程名称(Name)和状态码(State的单个字母),可以用grep配合awk或者cut精准截取内容,下面是修改后的完整脚本:

pids=$(pidof firefox) # 获取所有firefox进程的PID

for pid in ${pids[*]}
do
    # 从/proc/$pid/status中提取进程名称
    proc_name=$(grep "^Name:" /proc/$pid/status | awk '{print $2}')
    # 提取状态码(括号前的单个字母,比如S/R/D)
    proc_state=$(grep "^State:" /proc/$pid/status | awk '{print $2}')
    
    # 格式化输出
    echo "PID: $pid | Name: $proc_name | Status: $proc_state"
done

关键逻辑说明

  • grep "^Name:" /proc/$pid/status:精准匹配以Name:开头的行,避免误匹配其他包含Name的行
  • awk '{print $2}':截取该行的第二个字段,也就是冒号后的进程名称/状态码
  • 状态提取时,State:行的第二个字段就是你需要的单个状态字符(D/R/S/T/Z),括号后的描述可直接忽略

替代写法(用cut命令)

如果习惯用cut,也可以这么实现:

proc_name=$(grep "^Name:" /proc/$pid/status | cut -d' ' -f2)
proc_state=$(grep "^State:" /proc/$pid/status | cut -d' ' -f2)

注意事项

  • 确保当前用户有读取/proc/$pid/status的权限,普通用户一般能读取自己的进程,系统进程可能需要sudo
  • 如果pidof返回空(比如firefox未运行),循环会直接跳过,不会报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:03:03