繁体   English   中英

如何捕获文件中top命令(对于将要死的特定进程)的输出

[英]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

您可以使用以下选项将输出保存在文件中

  • -b:批处理操作模式
  • -n:迭代次数
  • -d:delay(每次迭代之间的中断;如果需要1次迭代则不需要这样)
  • -f:输出文件(仅在某些版本中可用,最好不要使用它)

现在考虑到你的目的,我们可以执行以下命令将输出保存在文件中:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM