欢迎来到代码驿站!

Shell

当前位置:首页 > 脚本语言 > Shell

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

时间:2022-12-28 09:38:58|栏目: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

上一篇:shell编程中for循环语句的实现过程及案例

栏    目:Shell

下一篇:没有了

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

本文地址:http://www.codeinn.net/misctech/222376.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有