Полезные утилиты для Linux администратора

Зачем это вообще нужно?

На системных администраторах всегда лежала большая ответственность. Ответственность за работу сети, служб и сервисов. Все это должно работать без перебоев и быть доступным круглосуточно, однако никогда не угадаешь, что может пойти не так. Именно поэтому у системного администратора, как и у любого другого специалиста, должен быть чемоданчик с инструментами на все случаи жизни.
В сегодняшней статье мы рассмотрим несколько полезных инструментов для сисадмина, упрощающие администрирование операционной системы Linux. Список этих утилит будет постоянно пополняться.

Tmux

Не для кого не секрет, что работа системного администратора, в первую очередь Linux-администратора, строится на взаимодействии с консолью. В случае, если нужно получить доступ к консоли на удаленном сервере, то для этого используется SSH-клиент — из пакетов OpenSSH или Putty. Но тут есть одна проблема — на одно подключение создается одна сессия. Если выразиться более понятно, то для того, чтобы выполнять какие-то действия на сервере параллельно, необходимо создать несколько SSH подключений к серверу. Эту проблему решает Tmux.
Tmux это терминальный мультиплексор, который позволяет отрывать множество виртуальных терминалов в одной SSH сессии. И как дополнительный бонус, Tmux позволяет разрывать SSH соединение, сохраняя при этом состояние виртуального терминала, позволяя подключиться к нему же в будущем. Устанавливается Tmux одной командой:

sudo apt install tmux

Когда вы вызываете tmux, перед вами открывается виртуальная консоль со строкой состояния внизу. Для того, чтобы создать новую консоль, необходимо нажать «Ctrl+B»+»c» и «Ctrl+b»+»x» для закрытия консоли. Для переключения между консолями используется «Ctrl+B»+»Номер консоли от 0 до 9», либо «Ctrl+b»+»p» для перехода на предыдущую консоль и «Ctrl+b»+»n» для перехода на следующую.
Для выхода из Tmux с сохранением состояния используется комбинация «Ctrl+b»+»d». В последствии можно подключиться к Tmux с ключом attach для продолжения работы:

tmux attach

Watch

Watch это легкая утилита, отлично подходящая для мониторинга. Принцип ее работы заключается в повторяющемся вызове команд (через некоторый интервал времени), которые обычно завершают свою работу после вывода информации на экран. Например, если выполнить следующее:

watch -n 2 "docker ps"

то можно в реальном времени мониторить список запущенных Docker контейнеров.
Также можно в реальном времени следить за оставшимся местом на диске:

watch -n 5 "df -h"

или состоянием сервера:

watch -n 5 uptime

Если же добавить ключ -d, то все изменения в выводе будут подсвечиваться, что также бывает полезно. Например, для просмотра вносимых в файл изменений:

watch -n 10 -d "cat /etc/hosts"

Устанавливать watch не нужно, так как, с большой долей вероятности, эта утилита поставляется вместе с дистрибутивом вашей операционной системы. Значение интервала запуска (ключ -n ) указывается в секундах.

Nmon

Еще одна утилита для мониторинга Linux серверов. Чем-то напоминает Htop, но более информативна. Nmon отображает статистику по:

  • процессам в системе
  • использованию CPU (может также нарисовать ASCII-график)
  • использованию оперативной памяти
  • I/O жестких дисков
  • загруженности сетевых соединений

И даже этим возможности Nmon не ограничиваются. Остальные функции можно посмотреть на справочной странице утилиты. Nmon присутствует в репозиториях всех дистрибутивов Linux, поэтому устанавливается одно командой:

sudo apt install nmon

После вызова утилиты из консоли, вы сразу попадаете на справочный экран. Чтобы отобразить статистику по необходимым метрикам, необходимо нажать на клавиши, указанные в справке. Например, для вывода статистики, как на скриншоте, нужно последовательно нажать c, m, d, n, t.

Для выхода из программы используется либо клавиша q, либо комбинация «Ctrl+C»

Multitail

Каждый linux администратор знает утилиту tail. Ее работа заключается в выводе на эран некоторого количества строк с конца файла. Хотя намного чаще tail используется с ключем -f (или же сразу вызывают tailf) — в этом случае утилита выводит на эран последние десять строк и ждет появления новых. Это особенно удобно для просмотра логов и дебага.
В дополнение к tail, или, если угодно, следующим шагом эволюции этой утилиты, стал multitail. Функционал не изменился, но теперь появилась возможность выводить на эран несколько логов одновременно. Это достаточно удобно, когда, например, нужно мониторить логи Apache:

multitail /var/log/apache2/access.log /var/log/apache2/error.log

Открывать за раз можно не ограниченное количество логов, главное чтобы хватило места на экране. Клавишами «Ctrl+C» можно прервать выполнение программы.

At

Продолжаем наш разбор полезных утилит для системного администратора. At представляет из себя планировщик задач, во многом похожем на cron, но стой лишь разницей, что cron, а точнее утилита crontab, используется для запуска по расписанию многократно повторяющихся действий — раз в сутки, три раза в неделю и т.п. At же в свою очередь служит для разового запуска задачи в строго указанное время.
Утилита at состоит из 4-х программ:

  • at — собственно, служит для создания задачи
  • atq — выводит список задач, ожидающих выполнения
  • atrm — служит для удаления задач
  • batch выполняет задачи в период наименьшей загруженности системы

Чтобы создать простую задачу для at достаточно выполнить:

at -f script.sh 10:00

После выполнения этой команды at запустит скрипт, указанный после ключа -f ровно в 10:00 по времени сервера. Если не указывать конкретную дату для at, а на ваших часах 11:00, то скрипт выполнится в 10:00 следующего дня.
Есть еще вариант запуска утилиты без указания пути к скрипту, а вводя команды напрямую через консоль. Выполняем:

at 18:00

И жмем Enter, а at перейдет в режим ожидания команд. После завершения ввода необходимо нажать Ctrl+D для выхода из at.

Atq выводит список всех еще не выполненных задач. Любую из задач можно удалить из списка, используя atrm и выполнив:

atrm №Задачи

Утилита at принимает значение времени в стандарте POSIX.2, то есть дату выполнения команды можно указывать так: ММ.ДД.ГГ. Указание даты должно следовать за указанием времени.

Lsof

lsof позволяет вывести на экран список файлов, используемые процессами в системе. А поскольку в linux «все есть файл», это открывает огромные возможности для использования данного инструмента. Для начала можно просто запустить программу без каких либо ключей и посмотреть на вывод:

lsof

Также можно посмотреть, какие процессы в системе открыли конкретный файл. Для примера возьмем error лог Apache:

lsof /var/log/apache2/error.log

lsof поддерживает множество ключей. С помощью ключа -c можно вывести на экран список всех процессов, начинающиеся с конкретной маски:

lsof -c bash

С помощью ключа -i можно перечислить список всех сетевых соединений:

lsof -i

lsof -i :21 #отсортирует соединения по 21 порту

lsof удивительно полезный инструмент, особенно когда необходимо разобраться в процессах, происходящих в системе. В этой небольшой заметки перечислены только некоторые варианты использования lsof, поэтому я очень рекомендую почитать справочную страницу утилиты:

man lsof