嗨,大家好!今天我們要來談論一個在 Linux 系統中非常有用的指令:pstree
。你是否曾經想過如何更清晰地了解系統中各個行程之間的相關性呢?那麼,就讓我們一起來探索這個強大的指令吧!
什麼是 pstree?
pstree
是一個能夠以樹狀圖的方式顯示系統中行程(Process)之間相關性的指令。通常,在一個系統中同時運行著多個行程,這些行程之間可能存在著不同的層級和相依關係。而 pstree
的優勢在於,它能夠將這些行程的相互關係以直觀的樹狀結構呈現,讓我們更容易理解。
安裝 pstree(如果需要的話)
大多數 Linux 系統預先安裝了 pstree
,但如果你的系統沒有安裝,你可以通過包管理器來進行安裝。比如,在 Ubuntu 上,你可以運行以下命令來安裝 pstree
:
sudo apt-get install pstree
使用 pstree
來視覺化行程
- -p:在每個行程名稱後面顯示該行程的 PID。
- -h:這將在目前正在執行的行程名稱前面加上顏色高亮標記,以便更容易識別。
- -u:在每個行程名稱後面顯示該行程的擁有者使用者名稱。
- -a:在每個行程名稱後面顯示該行程的命令行參數。
- -c:在每個行程名稱後面顯示該行程的類別名稱。
- -g:在每個行程名稱後面顯示該行程所屬的行程群組。
- -s:在每個行程名稱後面顯示該行程所屬的會話。
pstree
輸入指令 pstree
這將會顯示出整個行程樹狀結構,包括根行程(通常是 init
或 systemd
)以及它們的子行程。每個行程都會以名稱的方式呈現,並且子行程會縮進以顯示其階層關係。
systemd(1)─┬─accounts-daemon(1284)
├─acpid(1001)
├─agetty(1021)
├─atd(1033)
├─...
pstree -h
輸入指令 pstree -h
可以讓你在目前正在執行的行程名稱前面加上顏色高亮標記,以便更容易識別
systemd─┬─accounts-daemon───2*[{accounts-daemon}]
├─acpid
├─agetty
├─atd
├─cron
├─...
└─sshd─┬─sshd───sshd───bash
└─sshd───sshd───bash───pstree
pstree -u
輸入指令 pstree -u
可以讓你在每個行程名稱後面顯示該行程的擁有者使用者名稱
systemd───┬─accounts-daemon(user)
├─acpid(root)
├─agetty(root)
├─atd(root)
├─...
pstree -a
輸入指令 pstree -a
可以讓在每個行程名稱後面顯示該行程的命令行參數
systemd(1)─┬─accounts-daemon(1284)───2*[{accounts-daemon}]
├─acpid(1001)
├─agetty(1021)
├─atd(1033)
├─...
pstree -np
輸入指令 pstree -np
可以讓你快速地查看系統中運行的行程佈局,同時獲取每個行程的識別碼。這對於識別特定行程、追蹤行程相關性或進行系統監控都非常有用。
- -n:用於以行程的 PID 來排序輸出,而不是預設的以行程名稱排序。
- -p:在每個行程名稱後面顯示該行程的 PID。
systemd(1)─┬─accounts-daemon(1284)───2*[{accounts-daemon}]
├─acpid(1001)
├─agetty(1021)
├─atd(1033)
├─...
pstree {user}
pstree {user}
:這個指令的 {user}
部分應該替換為你要查詢的特定使用者的名稱。這個指令將會顯示該使用者所運行的行程樹狀結構。
systemd───┬─user@1000.service─┬─gnome-terminal─┬─bash───pstree
│ │ ├─bash───ls
│ │ ├─bash───vi
│ │ └─2*[{gnome-terminal-}]
│ ├─dbus-daemon
│ ├─dconf-service───2*[{dconf-service}]
│ ├─evolution-calen───2*[{evolution-calen}]
│ ├─evolution-sourc───2*[{evolution-sourc}]
│ ├─gnome-keyring-d───3*[{gnome-keyring-d}]
│ ├─gvfs-afc-volume───2*[{gvfs-afc-volume}]
│ ├─gvfs-daemon───{gvfs-daemon}
│ ├─gvfs-goa-volume───2*[{gvfs-goa-volume}]
│ ├─gvfs-metadata───{gvfs-metadata}
│ ├─gvfs-udisks2-vo───2*[{gvfs-udisks2-vo}]
│ ├─gvfsd
│ ├─ibus-daemon─┬─ibus-dconf───2*[{ibus-dconf}]
│ │ ├─ibus-engine-sim───2*[{ibus-engine-sim}]
│ │ ├─ibus-extension-───2*[{ibus-extension-}]
│ │ ├─ibus-memconf───2*[{ibus-memconf}]
│ │ ├─ibus-ui-gtk3───2*[{ibus-ui-gtk3}]
│ │ └─3*[{ibus-daemon}]
│ ├─mission-control───3*[{mission-control}]
│ ├─nautilus───2*[{nautilus}]
│ ├─nm-applet───2*[{nm-applet}]
│ ├─pulseaudio───2*[{pulseaudio}]
│ ├─ssh-agent
│ ├─tracker-miner-a───2*[{tracker-miner-a}]
│ ├─tracker-store───5*[{tracker-store}]
│ ├─xdg-desktop-por───3*[{xdg-desktop-por}]
│ └─xdg-document-po───2*[{xdg-document-po}]
└─{user}@1000.servi
pstree -p {pid}
pstree -p {pid}
:這個指令的 {pid}
部分應該替換為你想要查詢的特定行程的 PID。這個指令將會顯示該 PID 及其所有子行程的行程樹狀結構。
假設你想要查詢 PID 為 1234 的行程及其子行程的層次結構,下面是可能的輸出範例:
systemd(1)─┬─accounts-daemon(1284)
├─acpid(1001)
├─agetty(1021)
├─atd(1033)
├─...
└─sshd(1234)─┬─sshd───sshd───bash
└─sshd───sshd───bash───pstree
常見問題解答
通過 pstree
指令,您可以輕鬆地在 Linux 系統上視覺化行程之間的相依關係,而無需對複雜的命令列輸出感到困惑。這將使您更容易瞭解系統中各個行程的運作方式,從而有助於進行優化和故障排除。
- pstree 是否可以顯示行程的資源使用情況?
- 不,pstree 主要用於顯示行程之間的相依關係,並不會提供有關資源使用情況的資訊。
- pstree 能夠顯示隱藏的行程嗎?
- 否,pstree 只會顯示您的使用者可見的行程,不會顯示隱藏的系統行程。
- 我可以將
pstree
的輸出儲存到檔案中嗎?- 是的,您可以使用重定向來將
pstree
的輸出儲存到檔案中。例如,pstree > output.txt
將輸出存儲到名為output.txt
的檔案中。
- 是的,您可以使用重定向來將
pstree
的輸出是否會即時更新?- 否,
pstree
的輸出是一次性的靜態快照,不會自動即時更新行程的狀態。
- 否,
現在,您可以立即在您的 Linux 系統上嘗試一下 pstree
指令,探索行程之間的聯繫,並深入了解系統的運行情況。
延伸閱讀:如何在 Linux 遠端同步與備份 ? 使用 rsync 的教學與 crontab 定期備份與排程範例
延伸閱讀:chmod 是什麼 ? 5分鐘學會 Linux 檔案權限設定