Как я могу записать видео как вывод команды top в течение установленного периода времени?

top Команда выводит вид реального процесса и их использование ресурсов в системе.

Я хотел бы запустить программу при установке на сервер, которая запускает множество различных процессов с непредсказуемыми идентификаторами PID и фиксирует изменяющиеся выходные данные top, без необходимости полагаться на соединение SSH из среды рабочего стола. Желательно, чтобы я мог "воспроизвести" это в той же среде CLI, как если бы это было видео, но мог бы приемлемо переместить файл в другое место, чтобы просмотреть его таким образом.

Есть ли способ, используя только командную строку, с прямого терминала на установке сервера, чтобы я мог записать эти выходные данные в течение определенного периода времени? Либо путем ввода значения для времени, либо путем ручного запуска и остановки процесса записи.

3 ответа

Решение

Вы можете использовать утилиты "script" и "scriptreplay" для достижения этой цели.

  1. запустить скрипт с опцией --timing:

    скрипт --timing=top.timing topscript

  2. выполните команду top, дайте ей работать столько, сколько вы хотите

  3. выйдите из top, используя q или control-c.

  4. выйдите из сеанса сценария с помощью control-D (EOF) или введите команду exit

  5. запустите scriptreplay для воспроизведения сценария:

    scriptreplay top.timing topscript

Обычный режим работы top не подходит для сохранения вывода в файл.

Вы можете использовать -b (пакетный) режим top вместе с соответствующим интервалом времени для проверки (-d) и количество итераций для подсчета (-n).

Вы также можете упомянуть конкретные PID (-p) проверять только.

Например:

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

побежит top в пакетном режиме будет выполнять 3 итерации через 5 секунд каждая и будет контролировать только два упомянутых идентификатора PID (1089,2345). Вывод будет сохранен в output.txt,

Измените значения в соответствии с вашими потребностями.

Это не совсем то же самое, что 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,

Другие вопросы по тегам