我有一个正在监视的进程MYPID = 18686.
top -b -n 1000 -d 5 -p $MYPID | tail -1 > log.txt
进程终止后,输出文件为空.
我的最终目标是仅记录该过程生命周期内的cpu使用情况.指定-n 1000 -d 5是一种廉价的解决方法,可以在进程的预期寿命内运行.尾号-1是为了消除连续记录顶部标题的情况.
解决方法:
tail -1不产生top产生的每个输出屏幕的最后一行.它仅产生所有行的最后一行.
尝试:
top -b -n 1000 -d 5 -p "$MYPID" | grep "$MYPID" > log.txt
这会将所有提及PID的行收集到log.txt中,但没有标头(假设PID没有出现在标头上).
注意,grep通常是缓冲的.这意味着,如果您在运行期间检查log.txt,它可能已过期.使用GNU grep,您可以使用–line-buffered选项使log.txt保持最新:
top -b -n 1000 -d 5 -p "$MYPID" | grep --line-buffered "$MYPID" > log.txt
标签:bash,logging,linux
来源: https://codeday.me/bug/20191109/2012263.html