🐧 Как записать вывод команды top в файл

by itisgood

Команда Linux top широко используется системными администраторами Linux в режиме реального времени для проверки использования системных ресурсов, таких как процессор, дисковый ввод/вывод, средняя загрузка системы, запущенные процессы и использование памяти.

Я обычно использую Oracle OSWatcher Black Box (OSWbb) для сбора различных системных данных для диагностики проблем производительности в течение определенного периода времени.

Но если вы хотите собрать список процессов, которые потребляют много CPU и памяти в вашей системе за определенный период времени, вы можете сделать это с помощью команды top.

Чтобы перенаправить вывод команды top в текстовый файл, команда top должна быть выполнена в пакетном режиме.

Как сохранить вывод команды Linux в в изображение или текстовый файл

В этом руководстве мы покажем вам, как захватить вывод команды top в файлы на определенный период времени для устранения проблем с производительностью.

Перенаправление вывода команды top в файл

Поскольку я не использовал опцию delay, приведенная ниже команда top перенаправит вывод команды top за одну итерацию в файл.

📜 Bash – как перенаправить стандартный вывод (stdout) и стандартную ошибку (stderr ) в один и тот же файл

top -b -n 1 > /home/itisgood/backup/top_output.txt

Просмотр вывода из файла:

cat backup/top_output.txt | head -20

top - 14:11:15 up  2:34,  2 users,  load average: 0.87, 0.98, 1.40
Tasks: 332 total,   2 running, 330 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.3 us,  2.0 sy,  0.0 ni, 94.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem : 15831.25+total, 3907.852 free, 5055.945 used, 6867.457 buff/cache
MiB Swap: 2048.332 total, 2048.332 free,    0.000 used. 8452.277 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
12091 linuxge+  20   0 4210036 410464 204728 S 11.76 2.532  11:46.37 gnome-shell
14922 linuxge+  20   0 3039312 350928 121348 S 11.76 2.165   2:10.17 Web Content
20076 linuxge+  20   0   43696   4316   3692 R 11.76 0.027   0:00.04 top
12075 linuxge+   9 -11 2802264  15704  11212 S 5.882 0.097   5:42.77 pulseaudio
14163 linuxge+  20   0 3184192 524672 125504 S 5.882 3.236   3:31.18 Web Content
17274 linuxge+  20   0 28.615g 324396 115180 S 5.882 2.001  27:47.93 chrome
    1 root      20   0  238100  13744  10228 S 0.000 0.085   0:08.58 systemd
    2 root      20   0       0      0      0 S 0.000 0.000   0:00.01 kthreadd
    3 root       0 -20       0      0      0 I 0.000 0.000   0:00.00 rcu_gp
    4 root       0 -20       0      0      0 I 0.000 0.000   0:00.00 rcu_par_gp
    6 root       0 -20       0      0      0 I 0.000 0.000   0:00.00 kworker/0:0H-events_highpri
    7 root      20   0       0      0      0 I 0.000 0.000   0:03.78 kworker/0:1-mm_percpu_wq
    9 root       0 -20       0      0      0 I 0.000 0.000   0:00.00 mm_percpu_wq

Сохранение вывода команды top с более чем одной итерацией

Выполните приведенную ниже команду top, если вы хотите записать в файл более 1 итерации.

Допустим, 5 итераций, тогда вы сможете увидеть 5 выводов, скомпонованных один за другим в лог-файле.

Обычно программа работает непрерывно с задержкой в 2 секунды, и вы можете изменить это значение, добавив в верхнюю команду значение ‘-d’, как показано ниже:

top -n 5 -d 4 -b >/backup/top_output_1.txt

Просмотр вывода из файла:

cat /backup/top_output_1.txt

Как захватить вывод команды top в файл каждые 5 минут в течение часа

Приведенный ниже формат команды top позволяет захватывать вывод команды top в файл каждые 5 минут в течение часа.

Система создает отдельный файл каждые 5 минут, который поможет вам определить список процессов, которые потребляли больше CPU и памяти в системе.

Для этого добавьте следующий cronjob:

Приведенный ниже cronjob будет выполняться с 5 утра до 6 утра каждые 5 минут в течение часа.

0-59/5 5 * * * top -n 10 -d 4 -b > /home/itisgood/backup/top_out-`date +\%Y\%m\%d\%H\%M\%S`.txt

Детали:

  • -n : Задает максимальное количество итераций.
  • -b : Работа в пакетном режиме (Запуск команды top в пакетном режиме для перенаправления вывода в другие программы или в файл)
  • -d : Интервал задержки (Задает задержку между обновлениями экрана)

Вывод:

ls -lh | head -13

total 26M
-rw-r–r– 1 root root 116K Oct 25 05:00 top_out-20211025050001.txt
-rw-r–r– 1 root root 129K Oct 25 05:05 top_out-20211025050501.txt
-rw-r–r– 1 root root 124K Oct 25 05:10 top_out-20211025051001.txt
-rw-r–r– 1 root root 122K Oct 25 05:15 top_out-20211025051501.txt
-rw-r–r– 1 root root 119K Oct 25 05:20 top_out-20211025052001.txt
-rw-r–r– 1 root root 118K Oct 25 05:25 top_out-20211025052501.txt
-rw-r–r– 1 root root 119K Oct 25 05:30 top_out-20211025053001.txt
-rw-r–r– 1 root root 116K Oct 25 05:35 top_out-20211025053501.txt
-rw-r–r– 1 root root 115K Oct 25 05:40 top_out-20211025054001.txt
-rw-r–r– 1 root root 116K Oct 25 05:45 top_out-20211025054501.txt
-rw-r–r– 1 root root 115K Oct 25 05:50 top_out-20211025055001.txt
-rw-r–r– 1 root root 111K Oct 25 05:55 top_out-20211025055501.txt

Если вы хотите собрать вывод в один файл, используйте следующий cronjob:

Приведенный ниже cronjob будет выполняться с 9 утра до 10 утра каждые 5 минут в течение часа и добавлять результаты в один файл.

0-59/5 9 * * * top -b -n5 -d 5 >>/home/itisgood/backup/top_output.txt

Как записывать вывод команды top в файл каждые 5 минут в течение получаса

Для этого добавьте следующее задание cron: Приведенный ниже cronjob запускается каждые 5 минут с 13:30 до 14:00 в течение получаса.

30-59/5 13 * * * top -n 10 -d 4 -b > /home/itisgood/backup/top_out-`date +\%Y\%m\%d\%H\%M\%S`.txt

Заключение

В этом руководстве мы показали вам, как захватить вывод команды top в файл, используя различные форматы в Linux.

Если у вас есть какие-либо вопросы или замечания, не стесняйтесь оставлять комментарии ниже.

см. также:

 

You may also like

Leave a Comment