Linux

pgrep 輸出是否包含提供給程序的參數?

  • July 17, 2014

下面的程式碼片段(來自現有腳本)用於檢查xvfb程序以及它們是否正在偵聽特定埠:

 my_list=`pgrep -u $CurrentUserID -fl Xvfb | grep :${XVFBPORT}`
 process_list=`pgrep -fl Xvfb | grep :${XVFBPORT}`

Xvfb 程序以以下格式啟動:

 Xvfb :619  -fp /usr/share/fonts/X11/misc # i.e. in this case XVFBPORT is 619

顯然這在 Ubuntu 上不能按預期工作,因為輸出pgrep -fl Xvfb 會給出如下內容:

 4812 Xvfb

,末尾沒有“:619”。顯然,通過一些額外的管道ps可以輕鬆修復。

是否有其他發行版或配置pgrep可以提供腳本預期的輸出?

最新版本的pgrepfromprocps-ng具有該-a選項。

  -a, --list-full
         List  the  full  command line as well as the process ID.

所以pgrep -afl Xvfb | grep 619應該列印:

 4812 Xvfb :619  -fp /usr/share/fonts/X11/mis

在我的 Debian Jessie (testing) 上,這個選項是存在的,並且安裝的包是procps-ng 3.3.9,但是當引入這個選項時我找不到一個版本,也許這個選項存在procps-ng並且不存在於procps.

引用自:https://unix.stackexchange.com/questions/145080