java - Linux下使用 'ps'命令,如何查看实时数据?

标签 java linux cpu ps

<分区>

我发现我的 java web 服务器 (tomcat) 使用了高 cpu,所以我使用 'ps aux' 来查看进程信息,例如:

# ps aux  | grep -E "PID|java"
USER       PID %CPU %MEM    
root      7533  143 39.8 

它表明 java 占用了 143% 的 cpu。 然后用'top'命令查看,java进程的cpu占用率也是140%左右。

之后,我将 Web 服务器离线(无法访问,错误进程仍然存在)。 然后我用top看看,java使用的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' 还显示 cpu 几乎空闲:

# 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

然后,我再次使用'ps'命令,结果是:

#ps aux  | grep -E "PID|java"
USER       PID %CPU %MEM  
root      7533  137 39.8 

显示 7533 仍然占用 137% 的 cpu!隔了很久,我再次查看'ps',结果还是%137...

那么,“ps”命令会显示一些旧数据吗?以及如何通过'ps'查看实时数据(因为我想使用'ps -L'查看线程信息)?或者这是不可能的?

最佳答案

有很多工具可以查看几乎实时进程状态,例如:
顶部
htop
数据统计

此外,在linux中,还可以探索系统状态,包括cpu信息进程信息网络和接口(interface)信息等第四下/proc 文件夹。
这是工具从中提取的所有数据的地方。

关于java - Linux下使用 'ps'命令,如何查看实时数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21014902/

相关文章:

java - 是否可以从 Spring Boot 应用程序压缩嵌入式 HSQL DB?

java - Java 中的操纵杆支持

linux - 在 bash 脚本中重新加载环境变量

c - 是否可以仅一次编译就可以在不同的操作系统上运行程序?

c++ - CPU使用率高的常见原因是什么?

.net - 开发 .net 程序以在 GPU 而不是 CPU 上运行

java - 使用 JDK 8 启动 Jenkins,无需更改系统 java_home

java - hibernate注释中的错误映射

c++ - Ubuntu 上的 Google Earth C++ API 库错误

multithreading - Runtime.getRuntime().availableProcessors() 不返回可用内核