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

Linux下如何通过命令获取指定进程的共享内存(SHR)占用字节数

在Bash脚本中获取指定进程SHR共享内存字节数的方法

你可以直接用ps命令的内置字段获取SHR值,和你查询VSZ的用法逻辑完全一致,也可以通过读取proc文件系统拿到更稳定的结果:

  • 最简ps命令方案
    ps工具原生支持shr输出字段,和你用ps -o vsz= -p <PID>查虚拟内存的写法完全对齐,默认输出单位为KB:

    # 输出指定PID的SHR值(单位KB),无多余表头
    ps -o shr= -p <目标PID>
    

    如果需要脚本中直接拿到字节单位的纯数值,做一次简单算术转换即可,建议先去除输出前后的多余空格避免计算异常:

    # 直接得到字节单位的SHR数值,存入变量
    shr_bytes=$(( $(ps -o shr= -p <目标PID> | tr -d ' ') * 1024 ))
    

    这个字段的统计口径和top命令中展示的SHR指标完全一致,包含进程映射的共享库、共享内存段等所有可跨进程共享的内存部分

  • 更稳定的procfs方案
    如果想要规避不同发行版ps输出格式差异的问题,可以直接读取内核暴露的进程统计文件,结果精度更高:

    pid=<目标PID>
    # 获取系统内存页大小(单位字节)
    page_size=$(getconf PAGESIZE)
    # /proc/[pid]/statm 第三个字段为进程占用的共享内存页数
    shr_pages=$(awk '{print $3}' /proc/$pid/statm)
    # 计算得到字节单位的SHR值
    shr_bytes=$(( shr_pages * page_size ))
    

    这个方案不需要调用ps工具,执行效率更高,在绝大多数Linux发行版上都能稳定运行。

注意:如果传入的PID不存在,上述命令会返回空值或报错,生产环境脚本中建议提前增加PID存在性校验逻辑,避免异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:24:45