Sup*_*tux 157 linux shell memory-management cpu-usage
我想在Linux上获得单个进程的CPU和内存使用量 - 我知道PID.希望我能每秒都能得到它并使用'watch'命令将其写入CSV.我可以使用什么命令从Linux命令行获取此信息?
caf*_*caf 218
ps -p <pid> -o %cpu,%mem,cmd
Run Code Online (Sandbox Code Playgroud)
(您可以不使用"cmd",但这可能有助于调试).
请注意,这会给出进程在运行时的平均CPU使用率.
小智 34
您可以使用进程名称获取结果
ps -C chrome -o %cpu,%mem,cmd
Run Code Online (Sandbox Code Playgroud)
该-C
选项允许您在不知道它的pid的情况下使用进程名称.
Neo*_*eon 24
使用pidstat(来自sysstat - Refer Link).
例如,每5秒使用一次监视这两个进程ID(12345和11223)
$ pidstat -h -r -u -v -p 12345,11223 5
Run Code Online (Sandbox Code Playgroud)
Cir*_*四事件 12
启动程序并监控它
如果您想轻松地对可执行文件进行基准测试,则此表
topp() (
$* &>/dev/null &
pid="$!"
trap ':' INT
echo 'CPU MEM'
while sleep 1; do ps --no-headers -o '%cpu,%mem' -p "$pid"; done
kill "$pid"
)
topp ./myprog arg1 arg2
Run Code Online (Sandbox Code Playgroud)
现在当你按Ctrl + C它退出程序并停止监视.样本输出:
CPU MEM
20.0 1.3
35.0 1.3
40.0 1.3
Run Code Online (Sandbox Code Playgroud)
相关:https://unix.stackexchange.com/questions/554/how-to-monitor-cpu-memory-usage-of-a-single-process
在Ubuntu 16.04上测试过.
ps
命令(不应使用):
top
命令(应使用):
用于top
实时获取CPU使用率(当前短间隔):
top -b -n 2 -d 0.2 -p 6962 | tail -1 | awk '{print $9}'
会像这样回显: 78.6
-b
: 批处理模式-n 2
:迭代次数,使用的2
原因是:首次运行时,它没有以前的示例可以与之进行比较,因此这些初始值是自启动以来的百分比。-d 0.2
:延迟时间(以秒为单位,这是200ms)-p 6962
:Monitor-PIDtail -1
:最后一行awk '{print $9}'
:第9列(CPU使用率编号)小智 5
如上述caf 的回答所述,ps和某些情况下的pidstat将为您提供pCPU的生命周期平均值。要获得更准确的结果,请使用top。如果您需要先运行一次,则可以运行:
top -b -n 1 -p <PID>
Run Code Online (Sandbox Code Playgroud)
或仅处理数据和标头:
top -b -n 1 -p <PID> | tail -3 | head -2
Run Code Online (Sandbox Code Playgroud)
没有标题:
top -b -n 1 -p <PID> | tail -2 | head -1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
350942 次 |
最近记录: |