当运行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
实现这一点?
没有,没有ps。它要么是所有args,要么是none(arglist的模截断)。但是,过滤长ps输出以留下您想要的内容呢?使用sed、awk、perl、cut和其他工具可以做很多事情。手册中有所有的细节。
示例:要打印字段1到4以及最后一个字段,请使用
ps T | awk '{print $1, $2, $3, $4, $NF}'
请注意,这与Unix让一个工具做好一件事的理念是如何匹配的:ps打印流程信息,而awk选择您想要的字段。
您要查找的可能是jps
cli实用程序或图形jconsole
。