该top
命令输出系统中进程及其资源使用情况的实时视图。
我想在服务器安装上启动一个程序,该程序启动各种不同的进程,具有不可预测的 PID,并捕获不断变化的输出top
,而无需依赖桌面环境中的 ssh 连接。最好能够在相同的 CLI 环境中“重播”此内容,就像它是视频一样,但也可以接受将文件移动到其他地方以像这样查看它。
有没有办法,仅使用命令行,从服务器安装的直接终端,我可以在定义的时间段内记录此输出吗?通过输入时间值,或手动启动和停止记录过程。
答案1
您可以使用“script”和“scriptreplay”实用程序来完成此操作。
使用 --timing 选项运行脚本:
脚本 --timing=top.timing topscript
执行 top 命令,让它运行任意长的时间
使用 q 或 control-c 退出 top。
使用 control-D(EOF)或输入 exit 退出脚本会话
运行 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
。