shell腳本根據(jù)進(jìn)程查找指定容器的方法
當(dāng)我們?cè)谝慌_(tái)docker服務(wù)器上使用top命令定位出一個(gè)占用資源比較高的進(jìn)程,如何發(fā)現(xiàn)它屬于哪一個(gè)容器。
1、首先獲取進(jìn)程pid

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

當(dāng)docker 容器過(guò)多時(shí),一個(gè)一個(gè)排查對(duì)比費(fèi)事費(fèi)力,這里有一個(gè)腳本可以快速查找
#!/bin/bash
#將需要查找的pid輸入$1變量
#將所有容器的pid導(dǎo)入變量a
a=`docker ps -a |sed -n '1!p'|awk '{print $1}'`
#將容器id循環(huán)導(dǎo)入docker top命令,查找容器對(duì)應(yīng)的pid
for b in $a
do
c=`docker top $b|sed -n '1!p'|awk '{print $2}'`
#經(jīng)每一個(gè)容器的pid與輸入$1對(duì)比
if [ $c == $1 ] ; then
#輸出對(duì)應(yīng)$1的容器信息
docker ps -a |grep $c
fi
done補(bǔ)充:shell查找進(jìn)程并終止
創(chuàng)建kill.sh文件,內(nèi)容如下:
port=9200
#一、根據(jù)端口號(hào)查詢(xún)對(duì)應(yīng)的pid,兩種都行
pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');
#pid=$(ps -ef | grep 你的進(jìn)程或端口 | grep -v grep | awk '{print $2}')
#二、殺掉對(duì)應(yīng)的進(jìn)程,如果pid不存在,則不執(zhí)行?
if [ -n "$pid" ]; then?
kill -9 $pid;?
fi 這個(gè)腳本其實(shí)就2步,先獲取進(jìn)程id,然后 kill 掉這個(gè)進(jìn)程。
(1)獲取進(jìn)程id的方法
這個(gè)可以用 awk命令來(lái)獲取
ps -ef | grep 你的進(jìn)程 | grep -v grep | awk '{print $2}' 這里要把這個(gè)grep這個(gè)用 -v 來(lái)過(guò)濾掉,然后用awk命令,提取第2個(gè)參數(shù)就是進(jìn)程id了
(2)殺進(jìn)程方法
這個(gè)就直接kill -9 進(jìn)程id 就ok了
kill -9 你的進(jìn)程id
到此這篇關(guān)于shell腳本根據(jù)進(jìn)程查找指定容器的文章就介紹到這了,更多相關(guān)shell腳本查找指定容器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
開(kāi)發(fā)必備Linux常用的幾個(gè)命令分享
Linux作為一個(gè)高度成熟和強(qiáng)大的操作系統(tǒng),擁有非常豐富的命令行工具,對(duì)于Java開(kāi)發(fā)者來(lái)說(shuō),掌握一些常用的Linux命令可以大大提高工作效率,尤其是在服務(wù)器端開(kāi)發(fā)時(shí),本文小編給大家分享了一些常用命令,需要的朋友可以參考下2023-10-10
shell寫(xiě)的告警次數(shù)控制及恢復(fù)示例代碼
自己寫(xiě)的一個(gè)監(jiān)控腳本,發(fā)現(xiàn)告警短信次數(shù)未控制時(shí),垃圾短信N多。經(jīng)過(guò)思考,做了個(gè)簡(jiǎn)單的控制,同一故障只發(fā)送二次。之后不再發(fā)送。恢復(fù)后發(fā)送恢復(fù)短信2013-02-02
shell腳本學(xué)習(xí)指南[六](Arnold Robbins & Nelson H
這篇文章主要介紹了shell腳本學(xué)習(xí)指南[六](Arnold Robbins & Nelson H.F. Beebe著),需要的朋友可以參考下2014-02-02

