如何從ecs的pid定位到執行該程序的docker

2021-09-23 19:31:45 字數 671 閱讀 7015

例如,top顯示存在如下程序:

5400 nobody 20 0 73260 30620 2284 s 8.3 0.4 0:20.63 nginx

對於這樣乙個程序,我們如何快速定位到它是執行於哪乙個docker中呢 (特別是當ecs上執行了超過10個

docker的時候)?

先通過$ pstree -p | grep -n5 5400

找到它的最上層的父程序pid:

...114- | |-my_init(5248)-+-nginx(5398)-+-nginx(5399)

115: | | | |-nginx(5400)

116- | | | |-nginx(5401)

...得到父程序pid=5248, 然後遍歷所有容器的init程序進行匹配:

$ docker ps | awk '' | grep -v container | xargs docker inspect -f '} }' | grep 5248

5248 bd939dc98684

利用上面輸出的container id,

$ docker ps | grep bd939dc98684

即可得到該容器的其餘關鍵資訊。

參考資料:

如何從ps aux的結果中提取pid?

首先我們需要使用grep來取出我們想要檢視的程序。例如如果我們想要檢視所有含有關鍵字process的程序,則執行如下命令 ps aux grep process之後會顯示為如下格式 user pid cpu mem vsz rss tt stat started time command我們如果想要...

從原始碼到可執行程式的步驟

編譯,就是把文字形式源 翻譯為機器語言形式的目標檔案的過程。鏈結,是把目標檔案 作業系統的啟動 和用到的庫檔案進行組織,形成最終生成可執行 的過程 編譯過程細分為預編譯 編譯 彙編三個階段 預處理階段,在正式的編譯階段之前進行。主要是以下幾方面的處理 預編譯程式所完成的基本上是對源程式的 替代 工作...

從原始碼到可執行檔案的過程

1.預處理 預處理過程主要是處理那些原始檔和標頭檔案中以 開頭的命令,預處理的規則一般如下 1.對所有的巨集定義進行替換 2.處理所有條件編譯命令 3.處理 include命令,將被包含檔案的內容插入到該命令所在的位置 4.刪除所有的注釋 和 5.新增行號和檔名標識,便於在除錯和出錯時給出具體的 位...