我想知道Linux上单个进程的CPU和内存使用情况——我知道PID。希望我每秒钟都能得到它,并使用'watch'命令将其写入CSV。我可以使用什么命令从Linux命令行中获得这些信息?
当前回答
caf的答案是: Top -p <pid>
这将自动刷新CPU使用情况,因此非常适合监控。
其他回答
你可以使用top -b和grep输出你想要的pid(带-b标志的top在批处理模式下运行),或者也可以使用-p标志并指定pid而不使用grep。
ps axo pid,etime,%cpu,%mem,cmd | grep 'processname' | grep -v grep
PID -进程号
etime -进程运行/活时长
%cpu - cpu使用率
%mem -内存使用率
cmd -命令
将processname替换为任何你想跟踪的进程,mysql nginx php-fpm等等…
ps -p <pid> -o %cpu,%mem,cmd
(您可以省略“cmd”,但这可能有助于调试)。
注意,这给出了进程在运行期间的平均CPU使用率。
下面的命令获取特定进程(pid)每40秒CPU和内存使用率的平均值
pidstat 40 -ru -p <pid>
我的案例的输出(前两行为CPU使用率,后两行为内存):
02:15:07 PM PID %usr %system %guest %CPU CPU Command
02:15:47 PM 24563 0.65 0.07 0.00 0.73 3 java
02:15:07 PM PID minflt/s majflt/s VSZ RSS %MEM Command
02:15:47 PM 24563 6.95 0.00 13047972 2123268 6.52 java
要获得应用程序的内存使用情况(而不是它使用的共享库),需要使用Linux smaps接口。这个答案很好地解释了这一点。
推荐文章
- 在Bash中检查变量是否存在于列表中
- 查看PS命令的全部输出
- 确保一次只运行一个shell脚本实例的快速方法
- 为什么ARC仍然需要@autoreleasepool ?
- Linux命令将域名转换为IP
- 如何从命令行在windows中找到mysql数据目录
- 如何在Makefile中设置子进程的环境变量
- 如何让“wc -l”打印没有文件名的行数?
- 有效地测试Linux上的端口是否打开?
- 如何从另一个文件A中删除文件B中出现的行?
- 对以制表符分隔的文件进行排序
- 在内存的哪里我的变量存储在C?
- Shell脚本删除超过n天的目录
- 使用sudo时未找到命令
- 当有命令行参数时,如何使用GDB分析程序的核心转储文件?