1

运行ps命令时,我得到如下输出:

[nick]$ ps
  PID TTY          TIME CMD
 3287 pts/3    00:00:00 bash
12308 pts/3    00:00:00 ps
19544 pts/3    00:00:00 STS
19548 pts/3    00:45:25 java
19753 pts/3    00:04:10 java
21149 pts/3    00:15:25 java

这对我没有多大帮助,因为我不知道每个 Java 进程到底是什么。跑步ps T提供了更多信息,但现在信息太多了!

[nick]$ ps T
  PID TTY      STAT   TIME COMMAND
 3287 pts/3    Ss     0:00 bash
12319 pts/3    R+     0:00 ps T
19544 pts/3    S      0:00 /home/nick/springsource/sts-3.0.0.RELEASE/STS
19548 pts/3    Sl    45:25 /usr/lib/jvm/java-6-openjdk-amd64/bin/java -Dosgi.requiredJavaVersion=1.5 -Xms256m -Xmx1536m -XX:MaxPermSize=512m -jar /home/nick/springsource/sts-3.0.0.RELEASE//plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar -os linux -w......
19753 pts/3    Sl     4:10 /usr/lib/jvm/java-6-openjdk-amd64/bin/java -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:48135 -Dcatalina.base=/home/nick/Documents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp3 -Dcatalina.home=/home/nic......
21149 pts/3    Sl    15:25 /usr/lib/jvm/java-6-openjdk-amd64/bin/java -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:57346 -Dcatalina.base=/home/nick/Documents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp5 -Dcatalina.home=/home/nic......

有没有办法只显示正在运行的 Java 包或类的文件名?像这样的东西:

[nick]$ ps
  PID TTY          TIME CMD
 3287 pts/3    00:00:00 bash
12308 pts/3    00:00:00 ps
19544 pts/3    00:00:00 STS
19548 pts/3    00:45:25 java abc.jar
19753 pts/3    00:04:10 java def.java
21149 pts/3    00:15:25 java ghi.jar

如果这不能通过ps参数来完成,有没有办法实现它grep

4

2 回答 2

4

不,不是用ps。它要么全部为 args,要么没有(arglist 的模截断)。但是如何过滤长 ps 输出以留下您想要的内容呢?您可以使用 sed、awk、perl、cut 和其他工具做很多事情。手册有所有细节。

示例:要打印字段 1 到 4 以及最后一个字段,请使用

ps T | awk '{print $1, $2, $3, $4, $NF}'

请注意,这与 Unix 哲学是如何匹配让一个工具做好一件事的:ps 打印进程信息,而 awk 选择您想要的字段。

于 2012-08-31T08:01:57.123 回答
1

您正在寻找的可能是jpscli 实用程序或图形jconsole.

于 2012-08-31T08:03:06.883 回答