Автор оригинала: Леннарт Поттеринг (Lennart Poettering).
Ссылка: http://0pointer.de/blog/projects/systemd-for-admins-1.
Дата: 23.08.2010.
Возможно вам известно, что systemd - это новая система инициализации Fedora (с версии 14 (прим. пер. - на самом деле с 15)), также сейчас она адаптируется для нескольких других дистрибутивов (например, OpenSUSE). systemd предлагает ряд изменений и новых возможностей, выводящих процесс администрирования на новый уровень. Это первая часть из серии статей, которые я планирую публиковать раз в неделю, начиная со следующего месяца. Каждая запись будет посвящена одной из новых функций systemd. Многие из них просты, а значит эти статьи будут интересны широкой аудитории. Однако, время от времени мы будем рассматривать новые возможности systemd более подробно.
Проверка загрузки системы
Традиционно, при загрузке Linux системы на экране пробегает множество различных сообщений. В результате нашей работы по ускорению и распараллеливанию загрузки эти сообщения видны на экране в течение гораздо меньшего промежутка времени и читать их становится значительно сложнее, если они конечно они не скрываются графической заставкой splash. Тем не менее, информация о загрузке была и остается очень актуальной, т.к. показывает удалось ли запустить каждую службу (отмечаются зеленым [OK] или красным [FAILED]). Для улучшения ситуации с быстро загружающимися машинами и для того чтобы сделать эту информацию доступной во время работы, мы добавили в systemd возможность отслеживания и запоминания для каждой службы следующей информации: успешно ли он запустился, завершился ли он с ненулевым кодом возврата, истек ли таймаут, или он завершился ненормально (segfaulting и т.п.), как при запуске, так и во время выполнения. Просто набрав systemctl в терминале, вы можете запросить состояние всех служб, как родных для systemd, так и SysV/LSB:[root@lambda] ~# systemctl
UNIT LOAD ACTIVE SUB JOB DESCRIPTION
dev-hugepages.automount loaded active running Huge Pages File System Automount Point
dev-mqueue.automount loaded active running POSIX Message Queue File System Automount Point
proc-sys-fs-binfmt_misc.automount loaded active waiting Arbitrary Executable File Formats File System Automount Point
sys-kernel-debug.automount loaded active waiting Debug File System Automount Point
sys-kernel-security.automount loaded active waiting Security File System Automount Point
sys-devices-pc...0000:02:00.0-net-eth0.device loaded active plugged 82573L Gigabit Ethernet Controller
[...]
sys-devices-virtual-tty-tty9.device loaded active plugged /sys/devices/virtual/tty/tty9
-.mount loaded active mounted /
boot.mount loaded active mounted /boot
dev-hugepages.mount loaded active mounted Huge Pages File System
dev-mqueue.mount loaded active mounted POSIX Message Queue File System
home.mount loaded active mounted /home
proc-sys-fs-binfmt_misc.mount loaded active mounted Arbitrary Executable File Formats File System
abrtd.service loaded active running ABRT Automated Bug Reporting Tool
accounts-daemon.service loaded active running Accounts Service
acpid.service loaded active running ACPI Event Daemon
atd.service loaded active running Execution Queue Daemon
auditd.service loaded active running Security Auditing Service
avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack
bluetooth.service loaded active running Bluetooth Manager
console-kit-daemon.service loaded active running Console Manager
cpuspeed.service loaded active exited LSB: processor frequency scaling support
crond.service loaded active running Command Scheduler
cups.service loaded active running CUPS Printing Service
dbus.service loaded active running D-Bus System Message Bus
getty@tty2.service loaded active running Getty on tty2
getty@tty3.service loaded active running Getty on tty3
getty@tty4.service loaded active running Getty on tty4
getty@tty5.service loaded active running Getty on tty5
getty@tty6.service loaded active running Getty on tty6
haldaemon.service loaded active running Hardware Manager
hdapsd@sda.service loaded active running sda shock protection daemon
irqbalance.service loaded active running LSB: start and stop irqbalance daemon
iscsi.service loaded active exited LSB: Starts and stops login and scanning of iSCSI devices.
iscsid.service loaded active exited LSB: Starts and stops login iSCSI daemon.
livesys-late.service loaded active exited LSB: Late init script for live image.
livesys.service loaded active exited LSB: Init script for live image.
lvm2-monitor.service loaded active exited LSB: Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling
mdmonitor.service loaded active running LSB: Start and stop the MD software RAID monitor
modem-manager.service loaded active running Modem Manager
netfs.service loaded active exited LSB: Mount and unmount network filesystems.
NetworkManager.service loaded active running Network Manager
ntpd.service loaded maintenance maintenance Network Time Service
polkitd.service loaded active running Policy Manager
prefdm.service loaded active running Display Manager
rc-local.service loaded active exited /etc/rc.local Compatibility
rpcbind.service loaded active running RPC Portmapper Service
rsyslog.service loaded active running System Logging Service
rtkit-daemon.service loaded active running RealtimeKit Scheduling Policy Service
sendmail.service loaded active running LSB: start and stop sendmail
sshd@172.31.0.53:22-172.31.0.4:36368.service loaded active running SSH Per-Connection Server
sysinit.service loaded active running System Initialization
systemd-logger.service loaded active running systemd Logging Daemon
udev-post.service loaded active exited LSB: Moves the generated persistent udev rules to /etc/udev/rules.d
udisks.service loaded active running Disk Manager
upowerd.service loaded active running Power Manager
wpa_supplicant.service loaded active running Wi-Fi Security Service
avahi-daemon.socket loaded active listening Avahi mDNS/DNS-SD Stack Activation Socket
cups.socket loaded active listening CUPS Printing Service Sockets
dbus.socket loaded active running dbus.socket
rpcbind.socket loaded active listening RPC Portmapper Socket
sshd.socket loaded active listening sshd.socket
systemd-initctl.socket loaded active listening systemd /dev/initctl Compatibility Socket
systemd-logger.socket loaded active running systemd Logging Socket
systemd-shutdownd.socket loaded active listening systemd Delayed Shutdown Socket
dev-disk-by\x1...x1db22a\x1d870f1adf2732.swap loaded active active /dev/disk/by-uuid/fd626ef7-34a4-4958-b22a-870f1adf2732
basic.target loaded active active Basic System
bluetooth.target loaded active active Bluetooth
dbus.target loaded active active D-Bus
getty.target loaded active active Login Prompts
graphical.target loaded active active Graphical Interface
local-fs.target loaded active active Local File Systems
multi-user.target loaded active active Multi-User
network.target loaded active active Network
remote-fs.target loaded active active Remote File Systems
sockets.target loaded active active Sockets
swap.target loaded active active Swap
sysinit.target loaded active active System Initialization
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
JOB = Pending job for the unit.
221 units listed. Pass --all to see inactive units, too.
[root@lambda] ~#
(или на gist.github.com)
Вывод выше сокращен и удалены несколько строк, не относящиеся к теме статьи.Посмотрите на колонку ACTIVE, там отображается статус службы (на самом деле любого юнита systemd, которые могут быть больше, чем просто службами, но мы рассмотрим их в будущих статьях) которая может быть активна (active), т.е. работает, неактивна (inactive), т.е. не запущена, или же в любом другим состоянии. Если вы внимательно посмотрите, то увидите строку, помеченную как "maintenance" и выделенную красным. Это значит, что службу не удалось запустить или же произошла какая-то ошибка. В нашем примере это ntpd. Теперь, давайте узнаем, что на самом деле случилось с ntpd, воспользовавшись командой systemctl status:
[root@lambda] ~# systemctl status ntpd.serviceОтсюда видно, что NTP остановлен во время выполнения (у процесса был PID 953), а также то, что процесс завершился с кодом возврата 255.
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 мы планируем добавить возможность вызова ABRT. Как только это улучшение будет реализовано, systemctl status будет отображать для аварийно завершившегося процесса соответствующий аварийный дамп в ABRT.
Резюме: использование systemctl и systemctl status это современная, более полная замена для традиционных загрузочных сообщений SysV служб. systemctl status не только собирает больше информации об ошибках, но также показывает ошибки во время выполнения служб в дополнение к ошибкам при загрузке.
На этой неделе это все. Обязательно вернемся на следующей неделе с новой статьей о systemd для администраторов!