shell脚本根据进程查找指定容器的方法
当我们在一台docker服务器上使用top命令定位出一个占用资源比较高的进程,如何发现它属于哪一个容器。
1、首先获取进程pid

2、使用docker top命令查找容器pid
docker top 容器命或容器id

当docker 容器过多时,一个一个排查对比费事费力,这里有一个脚本可以快速查找
#!/bin/bash
#将需要查找的pid输入$1变量
#将所有容器的pid导入变量a
a=`docker ps -a |sed -n '1!p'|awk '{print $1}'`
#将容器id循环导入docker top命令,查找容器对应的pid
for b in $a
do
c=`docker top $b|sed -n '1!p'|awk '{print $2}'`
#经每一个容器的pid与输入$1对比
if [ $c == $1 ] ; then
#输出对应$1的容器信息
docker ps -a |grep $c
fi
done
补充:shell查找进程并终止
创建kill.sh文件,内容如下:
port=9200
#一、根据端口号查询对应的pid,两种都行
pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');
#pid=$(ps -ef | grep 你的进程或端口 | grep -v grep | awk '{print $2}')
#二、杀掉对应的进程,如果pid不存在,则不执行
if [ -n "$pid" ]; then
kill -9 $pid;
fi
这个脚本其实就2步,先获取进程id,然后 kill 掉这个进程。
(1)获取进程id的方法
这个可以用 awk命令来获取
ps -ef | grep 你的进程 | grep -v grep | awk '{print $2}'
这里要把这个grep这个用 -v 来过滤掉,然后用awk命令,提取第2个参数就是进程id了
(2)杀进程方法
这个就直接kill -9 进程id 就ok了
kill -9 你的进程id
您可能感兴趣的文章
- 02-02hadoop动态增加和删除节点方法介绍
- 02-02干货 | Linux新手入门好书推荐
- 02-02linux系统下MongoDB单节点安装教程
- 02-02Linux下nginx生成日志自动切割的实现方法
- 02-02Centos 6中编译配置httpd2.4的多种方法详解
- 02-02CentOS7 下安装telnet服务的实现方法
- 02-02分布式Hibernate search详解
- 02-02Hadoop对文本文件的快速全局排序实现方法及分析
- 02-02CentOS6.3添加nginx系统服务的实例详解
- 02-02Hadoop编程基于MR程序实现倒排索引示例


阅读排行
推荐教程
- 12-07解决tomcat启动报错:一个或多个listeners启动失败问题
- 12-07一文教你怎么选择Tomcat对应的JDK版本
- 12-07Tomcat启动报错:严重: Unable to process Jar entry [m
- 12-07Tomcat配置IPV6的实现步骤
- 12-07tomcat启动报错jar not loaded的问题
- 12-15Docker-Compose搭建Spark集群的实现方法
- 12-11docker存储目录迁移示例教程
- 01-07windows server 2008安装配置DNS服务器
- 12-07Tomcat部署war包并成功访问网页详细图文教程
- 12-19Zabbix SAML SSO 登录绕过漏洞的操作流程




