监视以记住其最后的零退出输出

监视以记住其最后的零退出输出

我运行一个需要很多时间的过程。时间实际上不是问题,但我想知道它需要多少 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"

相关内容