1

I have several java apps running on a machine and atop only tells me CMD java is there a way to get more information about that process, as I have +20 java in the list and I don´t know which one is which software. I know that htop can give me more insight with the tree view, but I would like to know if something similar is possible in atop. :)

Update #1

I tried it with -c which shows me how the app was started, but the problem is that it gets started by a wrapper which starts all apps the same way. Which means that all processes look like this:

$ java -Xms1G -Xmx2G ... 

If I use htop, I can switch to a tree view which gives me more information as I can see how the wrapper was started:

$ bash /path-which-tells-me-the-name-of-the-app/wrapper.sh
|-- java -Xms1G -Xmx2G ... 
|--|--thread1
|--|--thread2
|--|--...`

According to the comments, I would like to be able to get a quick overview which of the 20 processes/apps is causing how much CPU and i/o usage.

  • 2
    I'd also encourage you to check out the other tools that are better suited to showing the happenings for Java based applications that were covered in this Q&A: How to trace a java-program?. Tools such as jvmtop, jvmmonitor, visualvm, jstat, jmap, & jstack are pretty standard in the industry for debugging Java. – slm Mar 16 '14 at 21:26
  • is there any which can give me the overview above more than one and works with command line? I use the remote function of jvmmonitor, but I have to create one tab per app and I just want a quick overview. – user2693017 Mar 16 '14 at 23:53
  • Are you sure the full command is not visible? I can see the entire azureus command if I expand the terminal for example: /usr/lib/jvm/java-7-openjdk-amd64/bin/java -classpath /usr/lib/jni:/usr/lib/java:/usr/share/java/Azureus2.jar:/usr/share/java/log4j-1.2.jar:/usr/share, or at any rate enough to know the process. Also, does this have to be in top? Won't ps do? – terdon Mar 17 '14 at 0:13
  • yes, but as I said, the command is executed by the wrapper and so everything looks the same. as the wrapper uses the relative and not absolute path. I would need to see how the wrapper was started. – user2693017 Mar 17 '14 at 0:21
1

If you check man atop, you'll see that it has the -c flag, like top, that will show the full command line used to launch the program:

   c    Show the command line of the process.

        Per  process the following fields are shown: process-id, the occu‐
        pation percentage for the choosen resource and  the  command  line
        including arguments.

So, either launch it with the flag:

atop -c

Or, hit c while in the interactive atop window.

References

  • 2
    Incidentally, atop has a config file, atoprc, which can be configured so that this is the default. atoptool.nl/download/man_atoprc-5.pdf – slm Mar 16 '14 at 21:34
  • perfect, the only problem is that it looks the same for me :D I think that is because all apps use the same wrapper. What I see with -c is this java -Xms1G -Xmx2G .... and that is the same for all apps – user2693017 Mar 16 '14 at 23:42
  • In htop I can enable the tree view and see something like this bash /path/file.sh -> java -Xms1G -Xmx2G ... and the path tells me which app it is. – user2693017 Mar 16 '14 at 23:47
  • @user2693017 please edit your question and include that you tried this and failed. Ideally, also show us how to reproduce the issue. It works fine for me with the java processes I tried. – terdon Mar 16 '14 at 23:49
  • ok, I updated the question, I hope that makes it clearer – user2693017 Mar 17 '14 at 0:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.