在docker宿主机上查找指定容器内运行的所有进程的PID
2017-09-25 11:32
555 查看
找到指定容器的所有进程的PID可以更方便的对容器进程进行管理,特别是在某些容器卡住无法连接的场景。
1、找出容器ID
2、进入相应目录
3、进程号就存在一个文件里面
4、查看所有进程,找出对应的进程树分支
还有一种更有效的获取容器进程的方法,这种方法依赖docker程序,要是程序卡住就无法使用了。
docker top CONTAINERID
还可以单独查看指定容器所属docker子进程的PID。
docker inspect -f '{{.State.Pid}}' CONTAINERID
1、找出容器ID
# docker ps
2、进入相应目录
# cd /sys/fs/cgroup/memory/docker/d14e1a6182eeed7c8f2a7c0a315a790a16bfbab1fdc7a73813cdeee494e8050a/
3、进程号就存在一个文件里面
# cat cgroup.procs 1761 1869 1877 1892 1900 1903 3512 4793 4794
4、查看所有进程,找出对应的进程树分支
# ps auxwwf ... root 1761 0.0 0.0 11360 2432 pts/13 Ss 06:40 0:00 \_ /bin/bash /root/bin/autoboot.sh root 1869 0.0 0.0 66744 2772 ? Ss 06:40 0:00 \_ /usr/sbin/sshd 497 1877 0.0 0.0 41396 2732 ? Ss 06:40 0:00 \_ /usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -d root 1892 50.9 1.0 19031092 1068868 pts/13 Sl 06:40 143:06 \_ /usr/local/jdk/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -server -Xms2048m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/jvm/tomcat.dump -Xloggc:/var/log/jvm/tomcat_real.log -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start root 1900 0.0 0.0 20508 2304 ? Ss 06:40 0:00 \_ crond root 1903 0.0 0.0 11492 2688 pts/13 S+ 06:40 0:00 \_ /bin/bash root 3512 13.5 3.9 3922968 3892780 ? Ssl 06:46 37:15 \_ /usr/local/bin/redis-server *:6380 root 4793 0.0 0.0 109424 1880 ? Ss 06:47 0:00 \_ nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf 496 4794 0.0 0.0 109888 4516 ? S 06:47 0:00 \_ nginx: worker process ...
还有一种更有效的获取容器进程的方法,这种方法依赖docker程序,要是程序卡住就无法使用了。
docker top CONTAINERID
# docker top d14e1a6182eeed7c8f2a7c0a315a790a16bfbab1fdc7a73813cdeee494e8050a UID PID PPID C STIME TTY TIME CMD root 1761 4765 0 06:40 pts/13 00:00:00 /bin/bash /root/bin/autoboot.sh root 1869 1761 0 06:40 ? 00:00:00 /usr/sbin/sshd 497 1877 1761 0 06:40 ? 00:00:00 /usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -d root 1892 1761 50 06:40 pts/13 02:33:35 /usr/local/jdk/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -server -Xms2048m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/jvm/tomcat.dump -Xloggc:/var/log/jvm/tomcat_real.log -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start root 1900 1761 0 06:40 ? 00:00:00 crond root 1903 1761 0 06:40 pts/13 00:00:00 /bin/bash root 3512 1761 13 06:46 ? 00:39:38 /usr/local/bin/redis-server *:6380 root 4793 1761 0 06:47 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf 496 4794 4793 0 06:47 ? 00:00:00 nginx: worker process
还可以单独查看指定容器所属docker子进程的PID。
docker inspect -f '{{.State.Pid}}' CONTAINERID
# docker inspect -f '{{.State.Pid}}' d14e1a6182eeed7c8f2a7c0a315a790a16bfbab1fdc7a73813cdeee494e8050a 1761
相关文章推荐
- 一键创建docker 容器 指定ip,指定主机名,指定容器名称,指定镜像创建容器
- [Android Pro] 获取手机已经安装的应用 和 获取当前正在运行的所有进程(一个uid对应多个pid)
- 如何将所有的进程运行在一个指定的CPU上
- Linux查找所有正在运行的守护进程(daemon)
- [docker]将容器的进程映射到主机-nginx
- 检查所有运行的进程,关闭某个指定的进程
- 查找系统所有进程并强制关闭指定进程
- 如何将所有的进程运行在一个指定的CPU上
- window遍历任务管理器的进程 查找指定进程是否在运行
- 枚举系统内所有的运行进程以及杀死指定进程的方法
- 立足Docker运行MySQL:多主机网络下Docker Swarm模式的容器管理
- docker如何创建一个运行后台进程的容器并同时提供shell终端
- 根据pid查找进程运行路径
- 如何将所有的进程运行在一个指定的CPU上
- 如何将所有的进程运行在一个指定的CPU上
- Docker1.12 swarm模式下让容器在指定节点运行
- 通过Docker进程pid获取容器id 推荐
- Docker容器里的进程为什么要前台运行
- docker swarm模式指定宿主机运行服务pending问题
- 在容器中运行Jenkins部署主机中的docker应用