2011-09-15 69 views
1

我使用Java API連接我的遠程機器,以便我可以看到正在運行的進程。Linux ps輸出格式規格

其中一個要求是能夠殺死任何進程。

現在我執行命令正在運行的進程

ps aux | grep java這回列表。

例如。

 
root  330 0.2 0.0  0 0 pts/0 Z 08:42 0:11 [java] 

有沒有人知道規範是用於以上輸出?我需要將上面的行轉換成一個對象,其中330將是進程ID。

回答

3

如果您僅在名稱爲pgrep的進程的PID中進行了intresseted。


實施例:

$ pgrep sshd 
791 
22956 
23060 
3

也許你可以使用這樣的事情:

ps -ef | grep java | awk -F" " '{print $2}' 

或指定自己的格式(例如PID和唯一的命令):

ps -eo pid,comm | grep java | awk -F" " '{print $1}' 

如果需要的grep帶參數的命令:

ps -eo pid,command | grep java | awk -F" " '{print $1}' 
1

在我的Ubuntu系統,ps說,這是在符合這些標準:

標準 這PS符合:

1 Version 2 of the Single Unix Specification 
2 The Open Group Technical Standard Base Specifications, Issue 6 
3 IEEE Std 1003.1, 2004 Edition 
4 X/Open System Interfaces Extension [UP XSI] 
5 ISO/IEC 9945:2003</blockquote> 

但你可以考慮卸載的問題pgrep,這已經是保持並已經理解有關進程名和這樣。它給你一個非常非常簡單的輸出:默認情況下,只匹配進程ID,每行一個,像這樣:

$ pgrep apache 
3990 
22244 
22388 
22391 
22476

沒有得到更容易比解析。如果您需要查看更多,你可以考慮-l標誌:

$ pgrep -l apache 
3990 apache2 
22244 apache2 
22388 apache2 
22391 apache2 
22476 apache2

還要考慮看/proc filesystem,這就是ps查找其數據。

+0

謝謝!工作一個治療:) – Makky