systemctl
Для проверки состояния сервисов на большинстве дистрибутивов linux можно использовать менеджер системных служб под названием "systemd". Для обращения к нему используется несколько команд. Главная из них:systemctl
Если выполнить эту команду, то будет выведен список всех служб и их статусы. Но для получения общего состояния системы стоит использовать слово "status":
systemctl status
Если в системе нет сбоев, то результатом выполнения этой команде будет отчёт, в первых строках которого можно увидеть надпись State: running
. Если какая-либо служба завершилась аварийно, то статус будет "деградирован": State: degraded
. В таком случае первым делом надо определить, какой же именно юнит сломался. Для этого выполните команду:
systemctl --failed
В консоли будет распечатан список из всех юнитов, которые завершились аварийно:
UNIT LOAD ACTIVE SUB DESCRIPTION
● systemd-sysctl.service loaded failed failed Apply Kernel Variables
● systemd-tmpfiles-setup.service loaded failed failed Create Files
Теперь необходимо разобраться с каждым неработающим юнитом отдельно. Для этого испольузется команда:
systemctl status название_сервиса
Проверим так первый нерабочий сервис из нашего списка:
systemctl status systemd-sysctl
Результатом выполнения этой команды будет описание сервиса, его стартовых параметров и некоторые строки из системного журнала.
Записывать полное название юнита не обязательно. Systemctl предполагает, что в конце названий должен быть ".service".
Именно по строкам из системного журнала чаще всего получается определить неисправность. Но порой они бывают слишком длинными, поэтому обрезаются. Чтобы такого не происходило, достаточно добавить ключ "-l" после слова "status":
systemctl status -l systemd-sysctl
journalctl
Если по этой информации не стала ясна причина выключения юнита, то стоит теперь воспользоваться системным журналом. Для этого необходимо ввести команду:journalctl -b -u название_сервиса
Включ "-b" указывает на то, что надо отобразить только те записи журнала, которые были сделаны с момента последней загрузки. Ключ "-u" фильтрует список, чтобы в него попали сообщения только от нашего нерабочего сервиса "systemd-sysctl". В нашем случае команда получится такая:
journalctl -b -u systemd-sysctl
название_сервиса
Таким образом можно получить информацию для начала поиска проблемы с сервером.