溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

shell中怎么根據(jù)進(jìn)程查找指定容器

發(fā)布時(shí)間:2022-02-07 15:44:53 來源:億速云 閱讀:119 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“shell中怎么根據(jù)進(jìn)程查找指定容器”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“shell中怎么根據(jù)進(jìn)程查找指定容器”吧!

當(dāng)我們?cè)谝慌_(tái)docker服務(wù)器上使用top命令定位出一個(gè)占用資源比較高的進(jìn)程,如何發(fā)現(xiàn)它屬于哪一個(gè)容器。

1、首先獲取進(jìn)程pid

shell中怎么根據(jù)進(jìn)程查找指定容器

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

docker top 容器命或容器id

shell中怎么根據(jù)進(jìn)程查找指定容器

當(dāng)docker 容器過多時(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)查詢對(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命令來獲取

ps -ef | grep 你的進(jìn)程 | grep -v grep | awk '{print $2}'

        這里要把這個(gè)grep這個(gè)用 -v 來過濾掉,然后用awk命令,提取第2個(gè)參數(shù)就是進(jìn)程id了
(2)殺進(jìn)程方法
     這個(gè)就直接kill -9 進(jìn)程id 就ok了

kill -9 你的進(jìn)程id

到此,相信大家對(duì)“shell中怎么根據(jù)進(jìn)程查找指定容器”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI