Linux

注意記住它的最後一個零退出輸出

  • December 5, 2019

我執行一個需要大量時間的過程。時間實際上不是問題,但我想知道它需要多少 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在非零退出時不刷新輸出?或者顯示兩個最近的,所以之前的零退出仍然可以看到?

我會為此使用 shell while 循環。

pid=3100
while out=$(grep VmHWM /proc/$pid/status); do
 printf "\r$out     "
 sleep 1
done
printf "\n"

引用自:https://unix.stackexchange.com/questions/555736