如何在设定的时间段内录制类似 top 命令输出的视频?

如何在设定的时间段内录制类似 top 命令输出的视频?

top命令输出系统中进程及其资源使用情况的实时视图。

我想在服务器安装上启动一个程序,该程序启动各种不同的进程,具有不可预测的 PID,并捕获不断变化的输出top,而无需依赖桌面环境中的 ssh 连接。最好能够在相同的 CLI 环境中“重播”此内容,就像它是视频一样,但也可以接受将文件移动到其他地方以像这样查看它。

有没有办法,仅使用命令行,从服务器安装的直接终端,我可以在定义的时间段内记录此输出吗?通过输入时间值,或手动启动和停止记录过程。

答案1

您可以使用“script”和“scriptreplay”实用程序来完成此操作。

  1. 使用 --timing 选项运行脚本:

    脚本 --timing=top.timing topscript

  2. 执行 top 命令,让它运行任意长的时间

  3. 使用 q 或 control-c 退出 top。

  4. 使用 control-D(EOF)或输入 exit 退出脚本会话

  5. 运行 scriptreplay 重播脚本:

    scriptreplay top.timing topscript

答案2

常规操作模式top不适合将输出保存在文件中。

您可以使用-b的(批处理)模式top以及适当的时间间隔进行检查(-d)和计数的迭代次数(-n)。

您还可以提及特定的 PID(-p)来仅进行检查。

例如:

top -b -d 5 -n 3 -p 1089,2345 >output.txt

将以top批处理模式运行,每 5 秒进行 3 次迭代,并且仅监视两个提到的 PID(1089、2345)。输出将保存在 中output.txt

更改值以满足您的需要。

答案3

这不是确切地与相同top,但是您可以使用此脚本:

while true; do
echo 
echo $(date)
echo
ps -eo pid,user,pri,ni,vsize,rss,stat,pcpu,pmem,time,wchan --sort=-pcpu | head -20
sleep 5 
done  > ps.log

top您将在文件中获得或多或少的信息ps.log。有关该ps命令的详细信息,请参阅man ps

相关内容