I found that my java web server(tomcat) used high cpu, so I used 'ps aux' to see the process infomation, like:
# ps aux | grep -E "PID|java" USER PID %CPU %MEM root 7533 143 39.8
It showed that java took 143% cpu. Then I used 'top' command to see, the cpu usage of java process was also about 140%.
After that, I took the web server offline(no access, bug process still living). Then I used top to see, java used very low cpu:
# top | grep -E "PID|java" PID %CPU %MEM TIME+ COMMAND 7533 0.7 39.9 455:13.81 java PID %CPU %MEM TIME+ COMMAND
'vmstat' also showed that the cpu was almost idle:
# vmstat 1 -----cpu------ us sy id wa st 19 1 79 1 0 0 0 99 1 0 0 0 100 0 0 0 0 100 0 0 0 0 98 1 0 0 0 99 1 0
Then, I used 'ps' command again, the result was:
#ps aux | grep -E "PID|java" USER PID %CPU %MEM root 7533 137 39.8
It showed that 7533 still takes 137% cpu! After a long time, I check 'ps' again, the result is still %137...
So, dose the 'ps' command show some old data? And how can I see the realtime data by 'ps'(Because I want to use 'ps -L' to see the information of thread)? Or is that just impossible?
there are many tools to see the
almost real time process state, like:
Also, in linux, you can explore system state, including
network and interface information and so fourth under
This is where all the data that tools extract from.