Nun*_*uno 4 centos top ps docker centos7
我意识到在 Docker 容器内运行的进程出现在主机的进程列表中:
# ps aux | grep mariadb
root 12486 0.0 0.0 112812 976 pts/0 S+ 14:47 0:00 grep --color=auto mariadb
Run Code Online (Sandbox Code Playgroud)
有没有办法识别进程是在主机上运行还是在 Docker 容器上运行,或者有办法过滤掉 Docker 进程?
找到了答案。
要过滤不在 Docker 进程中运行的进程,我们可以使用以下命令:
ps -e -o pid,comm,cgroup | grep -v "/docker/"
因此,举例来说,如果我想杀死所有不在 Docker 内运行的“php-fpm”进程,我可以这样做:
kill -9 $(ps -e -o pid,comm,cgroup | grep -v "/docker/" | awk '$2 == "php-fpm" {print $1}')