shell脚本根据进程查找指定容器的方法

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/

当我们在一台docker服务器上使用top命令定位出一个占用资源比较高的进程,如何发现它属于哪一个容器。

1、首先获取进程pid

shell脚本根据进程查找指定容器的方法插图

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

docker top 容器命或容器id

shell脚本根据进程查找指定容器的方法插图1

当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
免费资源网 – https://freexyz.cn/


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容