Хотя Linux очень надежен, мудрые системные администраторы должны найти способ постоянно следить за поведением системы и ее использованием. Обеспечение времени безотказной работы максимально близко к 100% насколько это возможно, и доступность ресурсов являются критически важными потребностями во многих средах. Изучение прошлого и текущего состояния системы позволит нам предвидеть и, скорее всего, предотвратить возможные проблемы.
Знакомство с программой сертификации Linux Foundation
В этой статье мы представим список нескольких инструментов, доступных в большинстве вышестоящих дистрибутивов, для проверки состояния системы, анализа сбоев и устранения текущих проблем. В частности, из множества доступных данных мы сосредоточимся на ЦП, дисковом пространстве и использовании памяти, базовом управлении процессами и анализе журналов.
В Linux есть 2 хорошо известные команды, которые используются для проверки использования дискового пространства: df и ду.
Первый, df (что означает свободное место на диске), обычно используется для отчета об общем использовании дискового пространства файловой системой.
Без вариантов, df сообщает об использовании дискового пространства в байтах. С -час flag он будет отображать ту же информацию, используя вместо этого МБ или ГБ. Обратите внимание, что этот отчет также включает общий размер каждой файловой системы (в блоках по 1 КБ), свободное и доступное пространство и точку монтирования каждого устройства хранения.
# df. # df -h.
Это, конечно, приятно, но есть еще одно ограничение, которое может сделать файловую систему непригодной для использования, а именно исчерпание inodes. Все файлы в файловой системе отображаются на индексный дескриптор, содержащий его метаданные.
# df -hTi.
вы можете увидеть количество используемых и доступных inodes:
Согласно изображению выше, есть 146 используемые inodes (1%) в / home, что означает, что вы все еще можете создавать файлы размером 226 КБ в этой файловой системе.
Обратите внимание, что у вас может закончиться место для хранения задолго до того, как закончатся inodes, и наоборот. По этой причине вам необходимо отслеживать не только использование дискового пространства, но и количество индексных дескрипторов, используемых файловой системой.
Используйте следующие команды, чтобы найти пустые файлы или каталоги (которые занимают 0B), которые используют inodes без причины:
# find / home -type f -empty. # find / home -type d -empty.
Также вы можете добавить -Удалить установите флажок в конце каждой команды, если вы также хотите удалить эти пустые файлы и каталоги:
# найти / home -type f -empty --delete. # find / home -type f -empty.
Предыдущая процедура удалила 4 файла. Давайте еще раз проверим количество используемых / доступных узлов в / home:
# df -hTi | grep home.
Как видите, есть 142 теперь используется inodes (на 4 меньше, чем раньше).
Если использование определенной файловой системы превышает заранее определенный процент, вы можете использовать ду (сокращение от использования диска), чтобы узнать, какие файлы занимают больше всего места.
Пример приведен для /var, который, как вы можете видеть на первом изображении выше, используется на 67%.
# du -sch / var / *
Примечание: Что вы можете переключиться в любой из перечисленных выше подкаталогов, чтобы точно узнать, что в них находится и сколько занимает каждый элемент. Затем вы можете использовать эту информацию для удаления некоторых файлов, если они не нужны, или для увеличения размера логического тома, если необходимо.
Читайте также
Классический инструмент в Linux, который используется для общей проверки использования ЦП / памяти и управления процессами, - это верхняя команда. Кроме того, вверху отображается вид работающей системы в реальном времени. Существуют и другие инструменты, которые можно использовать для той же цели, например: htop, но я остановился на top, потому что он устанавливается в любом дистрибутиве Linux "из коробки".
Чтобы начать, просто введите следующую команду в командной строке и нажмите Enter.
# вершина.
Давайте рассмотрим типичный результат:
В строках с 1 по 5 отображается следующая информация:
1. Текущее время (20:41:32) и время безотказной работы (7 часов 41 минута). В систему входит только один пользователь и средняя нагрузка за последние 1, 5 и 15 минут соответственно. 0,00, 0,01 и 0,05 указывают на то, что в течение этих интервалов времени система бездействовала в течение 0% времени (0,00: никакие процессы не выполнялись. ожидание ЦП), затем он был перегружен на 1% (0,01: в среднем 0,01 процесса ожидали ЦП) и 5% (0.05). Если значение меньше 0 и меньшее число (например, 0,65), система простаивала на 35% в течение последних 1, 5 или 15 минут, в зависимости от того, где появляется 0,65.
2. В настоящее время работает 121 процесс (полный список вы можете увидеть в 6). Только 1 из них работает (в данном случае верхний, как вы можете видеть в столбце% CPU), а остальные 120 ждут в фоновом режиме, но «спят» и останутся в этом состоянии, пока мы их не вызовем. Как? Вы можете проверить это, открыв приглашение mysql и выполнив пару запросов. Вы заметите, как увеличивается количество запущенных процессов.
В качестве альтернативы вы можете открыть веб-браузер и перейти к любой странице, обслуживаемой Apache, и вы получите тот же результат. Конечно, в этих примерах предполагается, что на вашем сервере установлены обе службы.
3. us (время выполнения пользовательских процессов с неизмененным приоритетом), sy (время выполнения процессов ядра), ni (время выполнения пользовательских процессов с измененным приоритетом), wa (время ожидания ввода-вывода завершение), hi (время, затраченное на обслуживание аппаратных прерываний), si (время, затраченное на обслуживание программных прерываний), st (время, украденное гипервизором из текущей виртуальной машины - только в виртуализированных среды).
4. Использование физической памяти.
5. Использование пространства подкачки.
Чтобы проверить объем оперативной памяти и использование подкачки, вы также можете использовать бесплатно команда.
# бесплатно.
Конечно, вы также можете использовать -м (МБ) или -г (ГБ) переключатели для отображения той же информации в удобочитаемой форме:
# бесплатно -m.
В любом случае вы должны знать, что ядро резервирует как можно больше памяти и делает ее доступной для процессов, когда они ее запрашивают. В частности, «- / + буферы / кешСтрока показывает фактические значения после учета этого кэша ввода-вывода.
Другими словами, объем памяти, используемый процессами, и объем, доступный другим процессам (в данном случае 232 МБ использовал и 270 МБ в наличии соответственно). Когда процессам нужна эта память, ядро автоматически уменьшает размер кэша ввода-вывода.
Читайте также: 10 Полезная «бесплатная» команда для проверки использования памяти Linux
В любой момент времени в нашей системе Linux выполняется множество процессов. Есть два инструмента, которые мы будем использовать для тщательного мониторинга процессов: пс и pstree.
С использованием -e и -f варианты объединены в один (-ef) вы можете перечислить все процессы, которые в настоящее время запущены в вашей системе. Вы можете передать этот вывод другим инструментам, таким как grep (как объяснено в Часть 1 из серии LFCS), чтобы сузить вывод до желаемого процесса (ов):
# ps -ef | grep -i squid | grep -v grep.
Приведенный выше список процессов содержит следующую информацию:
владелец процесса, PID, родительский PID (родительский процесс), загрузка процессора, время запуска команды, tty (? указывает, что это демон), суммарное время ЦП и команду, связанную с процессом.
Однако, возможно, вам не нужна вся эта информация, и вы хотите показать владельца процесса, команду, которая его запустила, его PID и PPID, и процент используемой памяти в данный момент - в указанном порядке и сортировать по использованию памяти в порядке убывания (обратите внимание, что ps по умолчанию сортируется по PID).
# ps -eo user, comm, pid, ppid,% mem --sort -% mem.
Знак минус перед% mem указывает на сортировку по убыванию.
Если по какой-то причине процесс начинает отнимать слишком много системных ресурсов, это может поставить под угрозу общую функциональность системы, вы захотите остановить или приостановить ее выполнение, передав один из следующих сигналов, используя в убийство программа к нему. Другие причины, по которым вы могли бы подумать об этом, - это когда вы запустили процесс на переднем плане, но хотите приостановить его и возобновить в фоновом режиме.
Название сигнала | Номер сигнала | Описание |
SIGTERM | 15 | Изящно завершите процесс. |
SIGINT | 2 | Это сигнал, который отправляется, когда мы нажимаем Ctrl + C. Он нацелен на прерывание процесса, но процесс может его игнорировать. |
СИГКИЛЛ | 9 | Этот сигнал также прерывает процесс, но делает это безоговорочно (используйте с осторожностью!), Поскольку процесс не может его игнорировать. |
SIGHUP | 1 | Сокращенно от «Hang UP», этот сигнал дает демонам команду перечитать файл конфигурации без остановки процесса. |
SIGTSTP | 20 | Приостановите выполнение и дождитесь, чтобы продолжить. Это сигнал, который отправляется, когда мы набираем комбинацию клавиш Ctrl + Z. |
SIGSTOP | 19 | Процесс приостанавливается и не получает больше внимания со стороны циклов ЦП, пока не будет перезапущен. |
SIGCONT | 18 | Этот сигнал сообщает процессу возобновить выполнение после получения SIGTSTP или SIGSTOP. Это сигнал, который отправляется оболочкой, когда мы используем команды fg или bg. |
Когда нормальное выполнение определенного процесса подразумевает, что никакие выходные данные не будут отправляться на экран, пока он работает, вы можете захотеть запустить его в фоновом режиме (добавив амперсанд в конце команда).
Имя процесса &
или,
После того, как он начал работать на переднем плане, приостановите его и отправьте в фоновый режим с помощью
Ctrl + Z.
# kill -18 PID.
Обратите внимание, что каждый дистрибутив предоставляет инструменты для корректной остановки / запуска / перезапуска / перезагрузки общих служб, таких как служба в системах на базе SysV или systemctl в системах на основе systemd.
Если процесс не отвечает на эти утилиты, вы можете убить его принудительно, послав ему сигнал SIGKILL.
# ps -ef | grep apache. # убить -9 3821.
Когда в системе произошел какой-либо сбой (будь то отключение электроэнергии, отказ оборудования, запланированное или незапланированное прерывание процесса или вообще какое-либо отклонение от нормы), выполняется вход в систему. /var/log являются вашими лучшими друзьями, чтобы определить, что произошло или что могло вызвать проблемы, с которыми вы столкнулись.
# cd / var / log.
Некоторые предметы в /var/log - это обычные текстовые файлы, другие - это каталоги, а третьи - сжатые файлы повернутых (исторических) журналов. Вы захотите проверить те, в имени которых есть слово error, но проверка остальных также может пригодиться.
Представьте себе этот сценарий. Клиенты вашей локальной сети не могут печатать на сетевых принтерах. Первым шагом к устранению этой ситуации будет: /var/log/cups каталог и посмотрите, что там есть.
Вы можете использовать хвостик команда для отображения последних 10 строк файла error_log, или хвост -f error_log для просмотра журнала в реальном времени.
# cd / var / log / cups. # ls. # хвост error_log.
На приведенном выше снимке экрана представлена некоторая полезная информация, чтобы понять, что может быть причиной вашей проблемы. Обратите внимание, что выполнение этих шагов или исправление сбоев в процессе по-прежнему может не решить общую проблему, но если вы привыкнете С самого начала проверяя журналы каждый раз, когда возникает проблема (будь то локальная или сетевая), вы определенно будете правы отслеживать.
Хотя аппаратные сбои бывает сложно устранить, вам следует проверить dmesg и журналы сообщений и grep для слов, связанных с предположительно неисправной аппаратной частью.
Изображение ниже взято из /var/log/messages после поиска слова ошибка с помощью следующей команды:
# меньше / var / log / messages | grep -i ошибка.
Мы видим, что у нас проблема с двумя запоминающими устройствами: /dev/sdb и /dev/sdc, что, в свою очередь, вызывает проблемы с массивом RAID.
В этой статье мы рассмотрели некоторые инструменты, которые помогут вам всегда быть в курсе общего состояния вашей системы. Кроме того, вам необходимо убедиться, что ваша операционная система и установленные пакеты обновлены до последних стабильных версий. И никогда, никогда не забывайте проверять журналы! Тогда вы пойдете в правильном направлении, чтобы найти окончательное решение любых проблем.
Не стесняйтесь оставлять свои комментарии, предложения или вопросы, если они у вас есть, используя форму ниже.