如何在宿主机上获取指定容器的ps进程列表 仅需1-2条命令即可
宿主机获取指定cgroup容器进程列表的实现方案
方案1:直接输出宿主机视角的容器进程(1条命令)
直接读取目标cgroup的进程ID列表,传入ps筛选输出即可,输出字段和要求完全匹配:
ps -o pid,user,time,cmd -p $(cat /sys/fs/cgroup/foo/cgroup.procs | tr '\n' ',')
如果你使用的是cgroup v1环境,替换路径为/sys/fs/cgroup/pids/foo/cgroup.procs即可。
方案2:输出和容器内执行ps完全一致的结果(1条命令)
如果需要和容器内部看到的PID、输出效果完全相同,使用nsenter进入容器的PID namespace执行ps即可:
nsenter --pid=/proc/$(head -n1 /sys/fs/cgroup/foo/cgroup.procs)/ns/pid ps -o pid,user,time,cmd
这条命令会自动获取cgroup下的第一个进程(通常是容器的1号初始进程)的PID namespace,进入后执行ps,输出结果和在容器内部执行ps的效果完全一致。
内容的提问来源于stack exchange,提问作者0xF4D3C0D3
相关产品推荐
相关产品推荐

