在docker宿主机上查找指定容器内运行的所有进程的PID
转载 https://www.cnblogs.com/keithtt/p/7591097.html
找到指定容器的所有进程的PID可以更方便的对容器进程进行管理,特别是在某些容器卡住无法连接的场景。
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宿主机上查找指定容器内运行的所有进程的PID的更多相关文章
- shell查找指定时间段内的文件
#!/bin/bash#20170905 输入参数格式echo "显示"$1"的备份文件"date_0=$1date_1=`expr $date_0 + 1`d ...
- 理解Docker(3):Docker 使用 Linux namespace 隔离容器的运行环境
本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...
- Windows Phone 为指定容器内的元素设置样式
在Windows Phone中设置元素样式有多种 拿TextBlock来说 1.我们可以直接在控件上设置: <TextBlock Text="自身样式设置" Width=&q ...
- Docker 为 ASP.NET Core WebApi 应用程序生成 Docker 映像,创建容器并运行
1.使用VS2017新建ASP.NET Core WebApi项目 选择API启用Docker支持 2.为 ASP.NET Core WebApi 应用程序生成 Docker 映像,并创建容器运行 生 ...
- docker 在宿主机上根据进程PID查找归属容器ID
在使用docker时经常出现一台docker主机上跑了多个容器,可能其中一个容器里的进程导致了整个宿主机load很高,其实一条命令就可以找出罪魁祸首 #查找容器ID docker inspect -f ...
- 容器(docker)内运行Nginx
容器内运行nginx其实很简单,但是一开始还是浪费了我很多时间.这里写下来给大家省点时间. 1.创建nginx文件夹,放置各种配置及日志等. mkdir /docker/nginx docker 文件 ...
- Docker小白到实战之容器数据卷,整理的明明白白
前言 上一篇把常用命令演示了一遍,其中也提到容器的隔离性,默认情况下,容器内应用产生的数据都是由容器本身独有,如果容器被删除,对应的数据文件就会跟着消失.从隔离性的角度来看,数据就应该和容器共存亡:但 ...
- 026.[转] 基于Docker及Kubernetes技术构建容器云平台 (PaaS)
[编者的话] 目前很多的容器云平台通过Docker及Kubernetes等技术提供应用运行平台,从而实现运维自动化,快速部署应用.弹性伸缩和动态调整应用环境资源,提高研发运营效率. 本文简要介绍了与容 ...
- 1.docker介绍、命令、容器、镜像、数据卷、Dockerfile、常用软件安装、推送阿里云
一.docker介绍 1.docker是什么 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各 ...
随机推荐
- C++学习(三十二)(C语言部分)之 栈
栈测试代码笔记如下: #include<stdio.h> #include<string.h> #include <stdlib.h> #define SIZE 1 ...
- 基本数据类型,数字int字符串str
基本数据类型 数字 int 字符串 str 布尔值 bool 列表 list 字典 dict 元组 tuple(待续...) 整数 int - 创建 a = 123 a = int(123) - 转换 ...
- 使用python requests模块搭建http load压测环境
网上开源的压力测试工具超级的多,但是总有一些功能不是很符合自己预期的,于是自己动手搭建了一个简单的http load的压测环境 1.首先从最简单的http环境着手,当你在浏览器上输入了http://w ...
- Go Example--常量
package main import ( "fmt" "math" ) const s string = "constant" //定义字 ...
- day3 反射与动态代理
import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Metho ...
- linux服务器进程信息查看命令
#lsof 列出当前系统打开文件,常与-i选项使用,用于查看某个端口被哪个程序占用 [root@bogon ~]# lsof -i:80 COMMAND PID USER FD TYPE DEVICE ...
- C语言指针入门
指针指包含地址 声明指针: int num:声明整数 int *num:声明指针,下面的声明也是等价的,空格的使用指示个人爱好 int* num; int * num; int *num; in ...
- System.Collections 学习
public interface IEnumerator { object Current { get; } bool MoveNext(); void Reset(); } public inter ...
- python之路---10 *args **kwargs 命名空间 作用域 函数的嵌套
二十八.函数进阶 1. "*" 和 "**" ① 在形参位置时 都是聚合的作用 *args 位置参数→元组 **kwargs 关键字参数→ ...
- create-react-app 知识点
用 create-react-app 创建项目时,最好FQ:否则有些安装包会安装不上,报超时错误. create-react-app 创建的项目,执行yarn eject后,按需引入antd的2种方式 ...