Команда Linux top широко используется системными администраторами Linux в режиме реального времени для проверки использования системных ресурсов, таких как процессор, дисковый ввод/вывод, средняя загрузка системы, запущенные процессы и использование памяти.
Я обычно использую Oracle OSWatcher Black Box (OSWbb) для сбора различных системных данных для диагностики проблем производительности в течение определенного периода времени.
Но если вы хотите собрать список процессов, которые потребляют много CPU и памяти в вашей системе за определенный период времени, вы можете сделать это с помощью команды top.
Чтобы перенаправить вывод команды top в текстовый файл, команда top должна быть выполнена в пакетном режиме.
Как сохранить вывод команды Linux в в изображение или текстовый файл
В этом руководстве мы покажем вам, как захватить вывод команды top в файлы на определенный период времени для устранения проблем с производительностью.
Перенаправление вывода команды top в файл
Поскольку я не использовал опцию delay, приведенная ниже команда top перенаправит вывод команды top за одну итерацию в файл.
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 и памяти в системе.
- ⏲️ Как просмотреть или составить список заданий Cron на Linux
- 🤲 Linux Shell скрипт для мониторинга использования дискового пространства и отправки электронной почты
Для этого добавьте следующий 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.
Если у вас есть какие-либо вопросы или замечания, не стесняйтесь оставлять комментарии ниже.
см. также:
- 🐧 Работа с именами файлов с пробелами в системах Linux
- 🐧 Как узнать время и дату изменения файла в системах Linux
- 🐧 Вывод информации о загруженных модулях ядра
- 🐧 Удаление повторяющихся строк из текстового файла с помощью командной строки Linux
- 🐧 Как скопировать файл в несколько каталогов на Linux