Linux ps输出格式规范

时间:2011-09-15 09:01:23

标签: linux command ps

我使用Java API连接远程计算机,以便查看正在运行的进程。

其中一个要求是能够杀死任何进程。

现在我正在执行命令

ps aux | grep java返回正在运行的进程列表。

例如

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

有谁知道上面的输出使用的是什么规格?我需要将上面的行转换为一个对象,其中330将是进程ID。

3 个答案:

答案 0 :(得分: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 :(得分:3)

如果您只是在具有该名称的流程的pid中进行了检查,请选中pgrep


示例:

$ pgrep sshd
791
22956
23060

答案 2 :(得分: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 filesystemps查找其数据。