linux-如何在文件中捕获top命令的输出(对于将要终止的特定进程)

我有一个正在监视的进程MYPID = 18686.

top -b -n 1000 -d 5 -p $MYPID | tail -1 > log.txt

进程终止后,输出文件为空.

我的最终目标是仅记录该过程生命周期内的cpu使用情况.指定-n 1000 -d 5是一种廉价的解决方法,可以在进程的预期寿命内运行.尾号-1是为了消除连续记录顶部标题的情况.

这个问题的答案是有帮助的,但不是解决方案.
How to capture the output of a top command in a file in linux?

最佳答案
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

转载注明原文:linux-如何在文件中捕获top命令的输出(对于将要终止的特定进程) - 代码日志