2013-12-15 82 views
2

我做:獲取用pkill殺死的所有進程的PID?

pkill -9 -f stringMatch 

如果成功或不成功沒有被髮送到標準輸出。任何人都可以提出一種可移植的方式來返回被殺死的進程的PID?

+0

難道你不能在執行pkill命令之前用相同的選擇標準使用pgrep嗎? – jprice

+0

您可以使用pgrep來獲取所有的PID。如果你真的想要得到幻想,你可以寫一個腳本並通過pgrep找到的PID進行循環,然後一個接一個地檢查它們,以確保它們每次都被正確地殺死。 – umhelp

回答

1

man頁:

EXIT STATUS 
     0  One or more processes matched the criteria. 
     1  No processes matched. 
     2  Syntax error in the command line. 
     3  Fatal error: out of memory etc. 

因此,基於$?,退出代碼,你可以告訴我們,如果任何進程被殺死(「成功」),還是不行。你無法知道細節。所以,如果你想知道的PID被殺,你唯一的選擇是讓進程列表,遍歷他們一個一個殺,例如:

for pid in $(pgrep stringMatch); do 
    kill $pid && echo killed $pid || echo could not kill $pid 
done 
+0

感謝您的回答,我最終編寫了PID列表,運行pkill,然後再次pgrepping(檢查是否爲空字符串),如果不是回顯返回值+ PID不成功。 – OBV

+0

我不明白爲什麼你需要再次使用'pgrep'。你可以一口氣做到這一切。 – janos

0

最好的辦法是先用pgrep來獲取PID列表,然後使用該列表向kill發送信號。