我运行一个需要很多时间的过程。时间实际上不是问题,但我想知道它需要多少 RAM 内存。进程已在运行,因此/usr/bin/time
不是一个选项。我找到了进程的 pid 并运行
watch -n 1 grep VmHWM /proc/3100/status
它工作得很好,我可以离开它,做一些其他工作,稍后检查以 1 秒为间隔记录的值是多少。如果/当进程终止时(完成作业或因 OOM 而被终止),问题就会出现,因为 watch 将最后一个有效输出替换为
grep: /proc/3100/status: No such file or directory
使用选项-e
没有帮助。有没有办法watch
在非零退出时不刷新输出?或者显示两个最近的,这样之前的零出口仍然可以看到?
答案1
我会为此使用 shell while 循环。
pid=3100
while out=$(grep VmHWM /proc/$pid/status); do
printf "\r$out "
sleep 1
done
printf "\n"