如何知道在Unix中运行什么类?

时间:2012-07-25 16:04:27

标签: java unix solaris

我有一个正在通过unix(Solaris 9)中的脚本执行的类。在脚本内部,类正在运行:

java -cp $CLASSPATH myPackage.component.MyMainClass $PROPERTIES_PATH/myMainClassProperties.properties

需要监视该shell以查看它是否正常工作或失败,并且它还将与不同的参数文件并行运行。所以,我的问题是:

  • 如果我使用 top ,我怎么知道正在执行什么类?这可能吗?**
  • 有没有办法唯一地识别该类,以便在运行并行时不会崩溃?
  • 是否始终在流程表中显示为myPackage.component.MyMainClass

当我平行地说,我指的是:

java -cp $CLASSPATH myPackage.component.MyMainClass $PROPERTIES_PATH/myMainClassProperties.properties

并在另一个窗口/会话/作业中

java -cp $CLASSPATH myPackage.component.MyMainClass $PROPERTIES_PATH/mySomeOtherProperties.properties

**当我这样说时,是因为top显示的内容如下:

PID USERNAME    THR PRI NICE    SIZE    RES STATE   TIME    CPU COMMAND
8545    batman  47  4   10  190M    112M    sleep   0:04:00 0.07%   java
9022    joker   91  4   10  286M    211M    sleep   0:01:00 0.09%   java

2 个答案:

答案 0 :(得分:1)

您可以让top告诉您完整的命令,其中包含您传递给VM的任何参数。

同样ps也会给你完整的命令(带有匹配的参数)。

在我的debian中,我可以使用c切换切换显示的命令(从顶部开始并点击c直到它显示整个命令)

对于ps我单独使用参数-ef(但-f)应该针对这种情况。

您可能需要阅读man psman top

的输出

答案 1 :(得分:1)

可以使用ptree | grep javaptree | grep MyMainClass

获取信息

它列出了正在执行的进程的树以及在那里运行的命令,例如:

13456 ksh 
    123476 java -cp java -cp /classpath/fullpath myPackage.component.MyMainClass /full/properties/path/myMainClassProperties.properties

第一行是shell脚本,在其中(下一行)调用java jar。这适用于Solaris 9。

感谢@ Angelo-Neuschitzer的领导。