我正在寻找一个应用程序或代码行,可以让我观察一个过程,将信息保存在多个变量中,然后将收集到的信息放在一个文件中。
我一直在尝试各种方法,top
但都没有成功。我正在运行几个 CentOS 虚拟服务器,VM 有 2GB RAM、2 个处理器。
一个在指定的时间内运行的脚本,同时在文本文件中写入包含信息的行,以便最后我可以得到一个包含数据的表格。
我要对服务器进行压力测试,并且我希望获得一些数据来进行统计。
答案1
标准ps
够了。
while true; do ps o pcpu,rsz -p $pid | tail -n1 >>usage.log; sleep $interval; done
结果:
0.0 3352
0.3 31640
0.4 36924
0.5 36052
...
第一个字段是 CPU 使用率(以 % 为单位),第二个字段是物理内存使用率(以 KB 为单位)。
答案2
如果你关心精确的时间并且希望以百分比表示 CPU:
watch --precise -n 1 'top -b -n 1 -p [PID] | tail -n 1 | awk "{print \$9}" >> [PID].log'
答案3
答案4
以下命令获取特定进程 (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