Аудит systemd: почему не запускаются юниты?
Jan 28, 2016 17:27 · 431 words · 3 minute read
Systemd
— альтернативный менеджер служб для Linux, совместимый со скриптами инициализации LSB
и SysV
.
По сравнению с System V init
обладает некоторыми преимуществами и дополнительными возможностями, по умолчанию установлен в ОС Debian 8 (Jessie). Давайте разберемся, что делать, если не запускаются юниты!
При старте системы юниты должны запускаться в определенном порядке. Если по какой-либо причине юнит не может запуститься, это может повлечь за собой некорректный старт остальных юнитов и всей системы.
Примечание. C точки зрения systemd
юнит это — служба (.service
), точка монтирования (.mount
), устройство (.device
) или сокет (.socket
).
Наиболее частые проблемы с запуском юнитов — отсутствие необходимых зависимостей (например точки монтирования), настроек или неправильные права доступа.
Список юнитов смотрим так:
systemctl
UNIT LOAD ACTIVE SUB DESCRIPTION
-.mount loaded active mounted /
boot.mount loaded active mounted /boot
dev-hugepages.mount loaded active mounted Huge Pages File System
● dev-mqueue.mount loaded failed failed POSIX Message Queue File System
tmp.mount loaded active mounted Temporary Directory
mnt-exchange.mount loaded active mounted /mnt/exchange
proc-fs-nfsd.mount loaded active mounted /proc/fs/nfsd
usr-local-backup.mount loaded active mounted /usr/local/backup
var-lib-mysql.mount loaded active mounted /var/lib/mysql
var-www.mount loaded active mounted /var/www
...
● sphinxsearch.service loaded failed failed LSB: Fast standalone full-text SQL search engine
Список проблемных юнитов смотрим так:
systemctl --failed
● dev-mqueue.mount loaded failed failed POSIX Message Queue File System
● sphinxsearch.service loaded failed failed LSB: Fast standalone full-text SQL search engine
Узнать подробности о незапущенном юните можно так:
systemctl status dev-mqueue.mount
● dev-mqueue.mount - POSIX Message Queue File System
Loaded: loaded (/usr/lib/systemd/system/dev-mqueue.mount; static)
Active: failed (Result: exit-code) since Sun 2015-11-23 17:53:10 CET; 4min 12s ago
Where: /dev/mqueue
What: mqueue
Docs: man:mq_overview(7)
http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
Process: 446 ExecMount=/bin/mount -n mqueue /dev/mqueue -t mqueue (code=exited, status=32)
Nov 23 17:53:10 localhost.localdomain systemd[1]: dev-mqueue.mount mount process exited, code=exited status=32
Nov 23 17:53:10 localhost.localdomain systemd[1]: Failed to mount POSIX Message Queue File System.
Nov 23 17:53:10 localhost.localdomain systemd[1]: Unit dev-mqueue.mount entered failed state.
Из этого примера видно, что устройство /dev/mqueue
отсутствует в системе.
systemctl status sphinxsearch.service
● sphinxsearch.service - LSB: Fast standalone full-text SQL search engine
Loaded: loaded (/etc/init.d/sphinxsearch)
Active: failed (Result: exit-code) since Sun 2015-11-23 17:51:17 CET; 6min 5s ago
Process: 568 ExecStart=/etc/init.d/sphinxsearch start (code=exited, status=1/FAILURE)
Nov 23 17:51:17 astra sphinxsearch[568]: Starting sphinxsearch: /usr/bin/searchd already running.
Nov 23 17:51:17 astra systemd[1]: sphinxsearch.service: control process exited, code=exited status=1
Nov 23 17:51:17 astra systemd[1]: Failed to start LSB: Fast standalone full-text SQL search engine.
Nov 23 17:51:17 astra systemd[1]: Unit sphinxsearch.service entered failed state.
А данный пример — это пока не решенный баг sphinxsearch
.
Также для выяснения проблем с запуском юнитов можно изучить логи с помощью команды:
journalctl
или
journalctl _PID=идентификатор процесса
После того, как проблема будет найдена, устранить ее будет несложно.