[英]How to capture the output of a top command (for a specific process that will die) in a file
我有一个过程MYPID=18686
,我正在使用top进行监控。
top -b -n 1000 -d 5 -p $MYPID | tail -1 > log.txt
当进程终止时,输出文件为空。
我的最终目标是记录该进程生命周期内的CPU使用情况。 指定-n 1000 -d 5
是一种廉价的解决方法,可以在该过程的预期生命周期内运行。 tail -1
是为了消除不断记录顶部标题。
这个问题的答案很有帮助,但不是解决方案。 如何在linux中的文件中捕获top命令的输出?
tail -1
不会产生top
产生的每个输出屏幕的最后一行。 它只生成所有行的最后一行。
尝试:
top -b -n 1000 -d 5 -p "$MYPID" | grep "$MYPID" > log.txt
这将收集到log.txt
所有提到PID但没有标题的行(假设PID没有出现在标题上)。
请注意, grep
通常是缓冲的。 这意味着,如果您在运行期间检查log.txt
,它可能已过期。 使用GNU grep
,您可以使用--line-buffered
选项使log.txt
保持最新:
top -b -n 1000 -d 5 -p "$MYPID" | grep --line-buffered "$MYPID" > log.txt
您可以使用以下选项将输出保存在文件中
现在考虑到你的目的,我们可以执行以下命令将输出保存在文件中:
top -b -n 1000 -d 5 -p $MYPID | grep -i "Cpu(s)" | head -c21 | cut -d ' ' -f3| cut -d '%' -f1 > state.log
如果您希望在后台模式下运行命令,而不会被杀,当您注销会话时,您可以尝试以下操作:
nohup top-pid.sh &
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.