在 Linux 系統管理中,根據進程名稱快速找到對應的 PID(Process ID)是高頻需求。傳統做法是 ps aux | grep 關鍵字,但輸出冗長且需人工篩選。pgrep 專為此場景設計,能直接回傳符合條件的 PID,並支援顯示進程名稱、過濾使用者、匹配完整命令列等進階功能,大幅提升排查效率。
pgrep [選項] 模式
| 參數 | 說明 |
|---|---|
-l | 顯示 PID 與進程名稱(預設僅顯示 PID) |
-a | 顯示完整命令列(含參數) |
-u <user> | 僅匹配指定使用者的進程 |
-x | 精確匹配進程名稱(預設為部分匹配) |
-f | 匹配完整命令列而非僅進程名稱 |
-n | 回傳最新啟動的進程(最高 PID) |
-o | 回傳最早啟動的進程(最低 PID) |
-c | 僅輸出匹配進程數量 |
-d <分隔符> | 自訂 PID 輸出分隔符(預設換行) |
# pgrep httpd
2092
2094
2096
...
# pgrep -l httpd
2092 httpd
2094 httpd
2096 httpd
...
# pgrep -a httpd
2092 /usr/sbin/httpd -DFOREGROUND
2094 /usr/sbin/httpd -DFOREGROUND
...
# pgrep -u www-data nginx
# pgrep -x sshd # 不會匹配 sshd-agent 等
pkill 參數與 pgrep 幾乎相同,可直接終止匹配進程:
# pkill -u www-data -f "nginx: worker"
#!/bin/bash
# 檢查服務是否運行
if pgrep -x "mysqld" > /dev/null; then
echo "MySQL 正在運行"
else
echo "MySQL 未運行,嘗試啟動..."
systemctl start mysqld
fi
pgrep 預設匹配進程名稱前 15 字元,超長名稱建議加 -f 匹配完整命令列pgrep(極少見),通常屬於 procps 或 procps-ng 套件ps -fp $(pgrep -d, -x nginx) 可一次查看多進程詳細資訊pgrep 是 Linux 進程查詢的「瑞士刀」,語法簡潔且功能強大。掌握其核心參數(特別是 -l、-a、-u、-x、-f),即可替代繁瑣的 ps | grep 組合,讓日常運維更高效、腳本更穩健。
不知如何選擇?主流 Linux 發行版優缺點深度評測與選型指南
四大即時作業系統 (RTOS) 深度對比:QNX、LynxOS、RT-Linux、KURT-Linux
Linux lftp 連線 FTP 伺服器上傳下載指令大全:mirror 目錄同步、mget/mput 批次檔案、搜尋、檢視壓縮檔、書籤管理
Linux Shell 重定向與管道完全指南:標準輸入/輸出/錯誤控制實戰
Linux 網絡核心命令大全:netstat、nslookup、host、finger、ping 實戰詳解
Linux 檔案系統目錄結構深度解析:FHS 標準、掛載機制與連結技術
Postfix + Dovecot + Maildrop + MailScanner + ClamAV + SpamAssassin 企業級郵件系統構建全紀錄 (上)