Linux 程序樹檢視工具 pstree
簡介
pstree 是 Linux 下的一個用于展示程序樹結構的工具,類似于 tree 展示目錄樹一樣,可視化地檢視程序的繼承關系。pstree 工具其實是 PSmisc 工具集的成員之一,PSmisc 工具集由 4 個實用的 Linux 程序管理工具(通過 Linux 的 /proc 檔案系統實作)組成:
- fuser - identifies what processes are using files.
- killall - kills a process by its name, similar to a pkill found in some other Unices.
- pstree - Shows currently running processes in a tree format.
- peekfd - Peek at file descriptors of running processes.
pstree 帶來的友善之處:
一條指令就可以很輕松地追溯某個程序的繼承關系,再也不需要通過多次執行
一級一級的檢視程序的繼承關系。
ps -ef
安裝
On Fedora/Red Hat/CentOS
sudo yum install -y psmisc
On Mac OS
brew install pstree
On Ubuntu/Debian APT
sudo apt-get install psmisc
使用
文法
pstree [選項]
選項
-a:顯示每個程式的完整指令,包含路徑,參數或是常駐服務的标示;
-c:不使用精簡标示法;
-G:使用VT100終端機的列繪圖字元;
-h:列出樹狀圖時,特别标明現在執行的程式;
-H<程式識别碼>:此參數的效果和指定"-h"參數類似,但特别标明指定的程式;
-l:采用長列格式顯示樹狀圖;
-n:用程式識别碼排序。預設是以程式名稱來排序;
-p:顯示程式識别碼;
-u:顯示使用者名稱;
-U:使用UTF-8列繪圖字元;
-V:顯示版本資訊。
示例
1.顯示 PID 為 2858 程序的程序樹;
[[email protected] ~]$ pstree 2858
dockerd─┬─2*[docker-proxy───4*[{docker-proxy}]]
└─9*[{dockerd}]
2.顯示 PID 為 2858 程序的程序樹,同時列出每個程序的 pid;
注意:可以觀察出,大括号括起來的為線程!
[[email protected] ~]$ pstree -p 2858
dockerd(2858)─┬─docker-proxy(4378)─┬─{docker-proxy}(4379)
│ ├─{docker-proxy}(4380)
│ ├─{docker-proxy}(4381)
│ └─{docker-proxy}(4382)
├─docker-proxy(6582)─┬─{docker-proxy}(6583)
│ ├─{docker-proxy}(6585)
│ ├─{docker-proxy}(6586)
│ └─{docker-proxy}(6587)
├─{dockerd}(2997)
├─{dockerd}(2998)
├─{dockerd}(2999)
├─{dockerd}(3000)
├─{dockerd}(3222)
├─{dockerd}(3223)
├─{dockerd}(3224)
├─{dockerd}(4480)
└─{dockerd}(4493)
3.顯示 PID 為 2858 程序的程序樹,同時列出每個程序的 pid 和啟動程序的指令行;
[[email protected] ~]$ pstree -p 2858 -a
dockerd,2858 -H fd://
├─docker-proxy,4378 -proto tcp -host-ip 0.0.0.0 -host-port 3306 -container-ip 172.17.0.2 -container-port 3306
│ ├─{docker-proxy},4379
│ ├─{docker-proxy},4380
│ ├─{docker-proxy},4381
│ └─{docker-proxy},4382
├─docker-proxy,6582 -proto tcp -host-ip 0.0.0.0 -host-port 8080 -container-ip 172.17.0.3 -container-port 80
│ ├─{docker-proxy},6583
│ ├─{docker-proxy},6585
│ ├─{docker-proxy},6586
│ └─{docker-proxy},6587
├─{dockerd},2997
├─{dockerd},2998
├─{dockerd},2999
├─{dockerd},3000
├─{dockerd},3222
├─{dockerd},3223
├─{dockerd},3224
├─{dockerd},4480
└─{dockerd},4493
4.直接執行
pstree
預設列出整個系統的程序樹;
相關資料
http://man.linuxde.net/pstree
http://psmisc.sourceforge.net
https://www.wikiwand.com/en/Pstree