1. Контроль процесса загрузки

Как правило, во время загрузки Linux по экрану быстро пробегает огромное количество различных сообщений. Так как мы интенсивно работаем над параллелизацией и ускорением процесса загрузки, с каждой новой версией systemd эти сообщения будут пробегать все быстрее и быстрее, вследствие чего, читать их будет все труднее. К тому же, многие пользователи применяют графические оболочки загрузки (например, Plymouth), полностью скрывающие эти сообщения. Тем не менее, информация, которую они несут, была и остается чрезвычайно важной — они показывают, успешно ли запустилась каждая служба, или попытка ее запуска закончилась ошибкой (зеленое [ OK ] или красное [ FAILED ] соответственно). Итак, с ростом скорости загрузки систем, возникает неприятная ситуация: информация о результатах запуска служб бывает очень важна, а просматривать ее все тяжелее. systemd предлагает выход из этой ситуации: он отслеживает и запоминает факты успешного или неудачного запуска служб на этапе загрузки, а также сбои служб во время работы. К таким случаям относятся выходы с ненулевым кодом, ошибки сегментирования и т.п. Введя systemctl status в своей командной оболочке, вы можете ознакомиться с состоянием всех служб, как «родных» (native) для systemd, так и классических SysV/LSB служб, поддерживаемых в целях совместимости:


(Листинг был сокращен за счет удаления строк, не относящихся к теме статьи).

Обратите внимание на графу ACTIVE, в которой отображается обобщенный статус службы (или любого другого юнита systemd: устройства, сокета, точки монтирования — их мы рассмотрим подробнее в последующих статьях). Основными значениями обобщенного статуса являются active (служба выполняется) и inactive (служба не была запущена). Также существуют и другие статусы. Например, внимательно посмотрев на листинг выше, вы можете заметить, что служба ntpd (сервер точного времени) находится в состоянии, обозначенном как maintenance. Чтобы узнать, что же произошло с ntpd, воспользуемся командой systemctl status
(Прим. перев.: Стоит заметить, что формат вывода данной команды менялся по мере развития systemd — появлялись дополнительные поля с информацией, был добавлен вывод журнала службы (см. главу 13) и т.д. Здесь приведен пример вывода этой команды на момент написания исходной статьи (лето 2010 года)):


[root@lambda] ~# systemctl status ntpd.service
ntpd.service - Network Time Service
Loaded: loaded (/etc/systemd/system/ntpd.service)
Active: maintenance
Main: 953 (code=exited, status=255)
CGroup: name=systemd:/systemd-1/ntpd.service
[root@lambda] ~#

systemd сообщает нам, что ntpd был запущен (с идентификатором процесса 953) и аварийно завершил работу (с кодом выхода 255).
(Прим. перев.: Впоследствии, про просьбам пользователей, считавших, что слово «maintenance» недостаточно точно отражает ситуацию, оно было заменено на «failed»).
В последующих версиях systemd, мы планируем добавить возможность вызова в таких ситуациях ABRT (Automated Bug Report Tool), но для этого необходима поддержка со стороны самого ABRT. Соответствующий запрос уже направлен его разработчикам, однако пока не встретил среди них поддержки.
Резюме: использование systemctl и systemctl status является современной, более удобной и эффективной альтернативой разглядыванию быстро пробегающих по экрану сообщений в классическом SysV. systemctl status дает возможность получить развернутую информацию о характере ошибки и, кроме того, в отличие от сообщений SysV, показывает не только ошибки при запуске, но и ошибки, возникшие во время исполнения службы.

Содержание
Вперед - О службах и процессах