日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

shell腳本根據進程查找指定容器的方法_linux shell

作者:電腦前的cheems ? 更新時間: 2022-04-11 編程語言

當我們在一臺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

原文鏈接:https://www.cnblogs.com/runningonshell/p/15867611.html

欄目分類
最近更新