Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 快速查詢進程 PID:pgrep 指令完全指南

編輯:Linux 教學

前言

在 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 輸出分隔符(預設換行)

實戰範例

1. 基本查詢:找出所有 httpd 進程

# pgrep httpd
2092
2094
2096
...

2. 顯示進程名稱(推薦日常使用)

# pgrep -l httpd
2092 httpd
2094 httpd
2096 httpd
...

3. 顯示完整命令列

# pgrep -a httpd
2092 /usr/sbin/httpd -DFOREGROUND
2094 /usr/sbin/httpd -DFOREGROUND
...

4. 限定使用者

# pgrep -u www-data nginx

5. 精確匹配避免誤判

# pgrep -x sshd  # 不會匹配 sshd-agent 等

6. 結合 pkill 實現精準終止

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 組合,讓日常運維更高效、腳本更穩健。

Copyright © Windows教程網 All Rights Reserved