我正在使用 Java API 连接我的远程机器,这样我就可以看到正在运行的进程。
要求之一是能够终止任何进程。
现在我正在执行命令
ps aux | grep java
返回正在运行的进程的列表。
例如。
根 330 0.2 0.0 0 0 pts/0 Z 08:42 0:11 [java]
有谁知道上述输出的规格是什么?我需要将上面的行转换为一个对象,其中 330 将是进程 ID。
也许你可以使用这样的东西:
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}'
在我的 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
查找其数据的地方。