Любую операционную систему нужно держать под контролем, время от времени, отслеживать ее параметры, чтобы поддерживать все в нормальном состоянии и избежать возникновения серьезных и непредвиденных ошибок.
Операционная система Linux предлагает для этого множество инструментов. Вы можете отслеживать любые изменения в системе. Начиная от состояния процессора и запущенных процессов и до активности пользователей и состояния жесткого диска.
В этой статье мы рассмотрим программы слежения за компьютером Linux, которые будут полезны любому системному администратору, а также обычным пользователям. Большинство из утилит уже установлены в системе, и все что вам нужно, это только знать как ими пользоваться.
1. Top — просмотр активных процессов
Программа показывает запущенные процессы и их характеристики в реальном времени. По умолчанию отображаются процессы, использующие больше всего ресурсов процессора. Кроме этого, вы можете увидеть в программе сколько она использует памяти, ядер процессора, и время работы процесса. Список обновляется каждые несколько секунд.
Давайте рассмотрим несколько горячих клавиш, которые будут вам полезны при работе с утилитой:
- t — отобразить общую информацию по всей системе;
- m — отобразить информацию о памяти;
- A — создает на одном экране несколько топов процессов по максимального потребления ресурсов. Может быть полезным для быстрого выявления самых ресурсоемких процессов;
- f — выводит интерактивный экран настройки, позволяет быстро найти определенную задачу;
- o — фильтры процессов;
- r — выполнить утилиту renice для текущего процесса, позволяет изменить приоритет процесса;
- k — выполнить утилиту kill для этого процесса;
- z — отключить цветной вывод.
Эта утилита будет незаменимой при отслеживании перегрузок системы, с помощью нее вы сможете очень быстро и просто выявить какая программа потребляет все ресурсы.
2. vmstat
Эта команда показывает подробную информацию о памяти, процессах, страницах памяти, операциях ввода/вывода и нагрузке на процессор.
Цифра три, значит, что информация будет выводиться каждые три секунды. В первом отчете содержится вся информация, накопленная с момента запуска системы, во всех последующих за интервал между вызовами утилиты. С полем memory и swap все понятно, они отображают состояние памяти, куда интереснее следующие поля.
Колонка bi показывает количество операций чтения с диска, а bo — вывода на диск. Колонки us и sy показывают загрузку процессора пользовательскими процессами и процессами системы соответственно, id отображает время простоя в процентах, во время ожидания работы диска. Колонки si и so отображают количество запросов записи и выгрузки страниц из swap.
Сокращение wa обозначает количество операций ввода/вывода, которые ждут своей очереди. В разделе procs, колонка r показывает количество процессов, ждущих своей очереди для выполнения на процессоре, а колонка b показывает процессы ждущие окончания дисковых операций. В колонке system, in — число выполненных прерываний, cs — число переключения контекста процессора в секунду.
3. w — просмотр пользователей
Утилита w позволяет посмотреть что делают другие пользователи сейчас на этом компьютере. Вы увидите время их входа, номер консоли и даже команду, которую выполняет пользователь.
Здесь первая запись, тот терминал, в котором мы выполнили w, а вторая — другой терминал, в котором просто открыта оболочка bash.
4. uptime
С помощью команды uptime вы можете посмотреть сколько уже работает компьютер или сервер. Кроме того, команда показывает количество вошедших пользователей, а также загрузку системы за 1, 5 и пятнадцать минут до вызова команды:
Значение загрузки системы чем меньше тем лучше.
5. ps — отображение процессов
Не всем подходит интерактивная утилита top, для некоторых случаев необходимо использовать ps. Чтобы вывести все процессы используйте опцию -A или -e
Для получения большего количества информации используйте опцию -l: $ ps -Al
Для максимально полного вывода используйте такую команду: $ ps -AlF
Отображаем еще и потоки процессов: $ ps -AlFH
Вывести потоки сразу после процессов: $ ps -AlLm
Список процессов с потоками в виде дерева: $ ps -ejH
Отобразить информацию о безопасности: $ ps -eM
Вывести только нужный процесс: $ pgrep chromium
Или отобразить только процессы нужного пользователя: $ pgrep -u user
6. free — использование памяти
Эта утилита позволяет увидеть информацию о свободной, использованной и кэшированной памяти. а также пространстве подкачки:
Или в более понятном формате:
7. iostat -активность диска
Утилита iostat показывает немного другую информацию. Здесь вы можете увидеть скорость чтения и записи с диска, а также общее количество прочитанных и записанных данных:
8. sar — активность системы
Утилита sar позволяет собирать и сохранять информацию о работе системы в любое время. Вы можете сохранить такие параметры, как загрузка системы, нагрузка на процессор, скорость работы с диском и другое.
Чтобы посмотреть сохраненную в логах информацию за все время используйте:
Также вы можете вывести только данные за последние 24 часа:
Или смотреть статистику в реальном времени:
9. mpstat — статистика ядер процессора
Эта утилита показывает нагрузку на каждое ядро процессора отдельно. Просто выполните:
10. pmap — память процесса
Утилита позволяет узнать по какому адресу в памяти загружены компоненты процесса, различные библиотеки и т д. Для работы нужно передать программе PID:
Рассмотрим несколько колонок:
- mapped — количество памяти, в которую загружены файлы;
- writeable/private — размер защищенного адресного пространства;
- shared — общее пространство, для нескольких процессов.
11. ss — монитор сетевых подключений
Утилита позволяет отобразить активные сетевые соединения, таблицу маршрутизации, замаскированные соединения, а также участие в широковещательных передачах. Также вы можете посмотреть информацию об открытых сокетах и портах. Как пользоваться утилитой читайте в статье команда ss в linux.
12. iptraf — сетевая статистика в реальном времени
Команда iptraf позволяет отслеживать работу локальной сети. Она основана на Ncurses, а это значит, что вы будете иметь интерактивный доступ ко всем данным. Это информация о передаваемых данных по протоколах TCP, UDP, ICMP и OSPF, нагрузка на Ethernet, статистика узлов, ошибки контрольных сумм IP и многое другое.
13. tcpdump — анализ сетевого трафика
В отличие от предыдущей утилиты tcpdump позволяет анализировать содержимое всех пакетов, проходящих через определенный порт. Например, вы можете отслеживать всю информацию о запросах к DNS с помощью следующей команды:
Также вы можете вывести все пакеты только протокола http, только без служебных пакетов FIN, SYN, ASC:
Теперь выведем все HTTP запросы на ip 192.168.1.8:
15. starce — системные вызовы
Эта утилита позволяет выполнять трассировку системных вызовов и сигналов. Мониторинг linux может быть полезен для отладки веб-сервера или других проблем в системе.
16. nethogs — анализ нагрузки на сеть
Это более простой анализатор загрузки сети, который показывает сколько и какая программа потребляет пропускной способности сети. Очень просто и быстро можно понять что именно ест весь трафик. Подробнее о nethogs смотрите здесь.
Выводы
Вот и все, теперь вы знаете программы слежения за компьютером linux и сможете поддерживать свою систему в нормальном состоянии. С помощью этих утилит намного проще решать проблемы с системой, чем пытаться наугад понять почему все глючит или не работает.
На завершение 15 малоизвестных и полезных команд терминала: