2

我正在使用 Java API 连接我的远程机器,这样我就可以看到正在运行的进程。

要求之一是能够终止任何进程。

现在我正在执行命令

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

例如。

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

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

4

3 回答 3

4

也许你可以使用这样的东西:

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

或者自己指定格式(例如,仅 pid 和 command):

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

如果 grep 需要带参数的命令:

ps -eo pid,command | grep java | awk -F" " '{print $1}'
于 2011-09-15T09:04:09.577 回答
3

如果您只对具有该名称的进程的 pid 感兴趣,请检查pgrep


例子:

$ pgrep sshd
791
22956
23060
于 2011-09-15T09:08:03.973 回答
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文件系统,这是ps查找其数据的地方。

于 2011-09-15T09:07:00.717 回答