shell腳本根據(jù)進程查找指定容器的方法
當(dāng)我們在一臺docker服務(wù)器上使用top命令定位出一個占用資源比較高的進程,如何發(fā)現(xiàn)它屬于哪一個容器。
1、首先獲取進程pid
2、使用docker top命令查找容器pid
docker top 容器命或容器id
當(dāng)docker 容器過多時,一個一個排查對比費事費力,這里有一個腳本可以快速查找
#!/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命令,查找容器對應(yīng)的pid for b in $a do c=`docker top $b|sed -n '1!p'|awk '{print $2}'` #經(jīng)每一個容器的pid與輸入$1對比 if [ $c == $1 ] ; then #輸出對應(yīng)$1的容器信息 docker ps -a |grep $c fi done
補充:shell查找進程并終止
創(chuàng)建kill.sh文件,內(nèi)容如下:
port=9200 #一、根據(jù)端口號查詢對應(yīng)的pid,兩種都行 pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }'); #pid=$(ps -ef | grep 你的進程或端口 | grep -v grep | awk '{print $2}') #二、殺掉對應(yīng)的進程,如果pid不存在,則不執(zhí)行? 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個參數(shù)就是進程id了
(2)殺進程方法
這個就直接kill -9 進程id 就ok了
kill -9 你的進程id
到此這篇關(guān)于shell腳本根據(jù)進程查找指定容器的文章就介紹到這了,更多相關(guān)shell腳本查找指定容器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux xargs命令如何將命令的結(jié)果作為參數(shù)
xargs是給命令傳遞參數(shù)的一個過濾器,也是組合多個命令的工具,這篇文章主要介紹了Linux xargs命令如何將命令的結(jié)果作為參數(shù),需要的朋友可以參考下2023-04-04shell腳本編寫ping包及arp的監(jiān)控并發(fā)送短信功能
這篇文章主要介紹了shell腳本編寫ping包及arp的監(jiān)控并發(fā)送短信功能,需要的朋友可以參考下2017-03-03Linux定時執(zhí)行任務(wù)at和crontab命令詳解
本篇文章主要介紹了Linux定時執(zhí)行任務(wù)at和crontab命令這兩個命令的基本用法和區(qū)別,一起學(xué)習(xí)下。2017-11-11svn服務(wù)器啟動和svn服務(wù)器重啟、停止等操作腳本分享
這篇文章主要介紹了svn服務(wù)器啟動和svn服務(wù)器重啟、停止等操作腳本,需要的朋友可以參考下2014-03-03