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

使用taskset绑定进程后,如何查询各CPU核心的共享进程?

当然可以!这事儿在Linux下有好几种靠谱的办法,能精准拿到你想要的「核心X对应进程列表」的结果,我给你挨个说清楚:

1. 用 ps 命令快速输出结构化结果

这是最直接的命令行方式,不需要额外安装工具,一行命令就能搞定:

ps -eo pid,pcpu,cmd,psr | sort -k4n

参数解释:

  • pid:进程ID
  • pcpu:进程当前的CPU使用率
  • cmd:进程的命令名称
  • psr:当前进程正在运行的CPU核心编号
    最后的sort -k4n是按核心编号(第4列)从小到大排序,这样你就能清晰看到每个核心下对应的所有进程了。
2. 用 htop 可视化查看(更直观)

如果你的系统装了htop(没装的话用包管理器装就行,比如apt install htop),它的可视化界面会更友好:

  • 打开htop后按F2进入设置界面
  • 找到「Display options」,勾选「CPU per process」选项
  • 按F10保存设置返回主界面
    现在每个进程的右侧会显示它当前运行的核心编号,你还可以点击「CPU」列进行排序,快速把同一核心的进程归到一起。
3. 解析 /proc 文件系统(自定义脚本方式)

Linux的/proc虚拟文件系统里存着所有进程的实时状态信息,你可以写个简单的Shell脚本批量遍历核心和进程,输出你想要的格式:

# 遍历所有CPU核心(自动获取系统总核心数)
for core in $(seq 0 $(($(nproc) - 1))); do
    echo "核心 $core 运行的进程:"
    # 遍历所有进程ID
    for pid in $(ls /proc | grep '^[0-9]\+$'); do
        # 检查进程状态文件是否存在(避免进程突然退出的情况)
        if [ -f /proc/$pid/stat ]; then
            # 从/proc/<pid>/stat中提取当前运行的核心(第40个字段)
            current_core=$(awk '{print $40}' /proc/$pid/stat)
            if [ "$current_core" -eq "$core" ]; then
                echo -n "$pid "
            fi
        fi
    done
    echo -e "\n"
done

运行这个脚本后,就会直接输出每个核心对应的进程ID列表,完全符合你的需求。

小提示

要区分「进程允许运行的核心」和「当前实际运行的核心」:

  • 用taskset -p <pid>可以查看进程被绑定的亲和性核心列表(也就是它允许运行的核心)
  • 上面的方法都是查看进程当前实际正在运行的核心,这才是你要的共享情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:24:06