posts projects about
Самая краткая шпаргалка systemd на примере Ubuntu 16.04

10 Apr 2017, 18:35 server linux systemd

С версии 16.04 Ubuntu включает в себя systemd как init-систему по умолчанию. На systemd также перешли Debian, CentOS и другие популярные linux-дистрибутивы. Это краткая шпаргалка по командам systemctl и jounrnalctl

Unit — это базовый термин systemd, он обозначает ресурс, которым может управлять systemd - демон, сокет, точка монтирования и другое. В этой статье подразумевается что юнит - это демон. Файлы юнитов (аналог инит скриптов) лежат в /lib/systemd/system или /etc/systemd/. Управлять юнитами (аналог команды service) можно с помощью команды systemctl.

systemctl

Список всех запущенных юнитов:

# systemctl

Информация о статусе юнита:

# systemctl status nginx

Релоад конфигурации демона:

# systemctl reload nginx

Релоад конфигурации systemd (нужно при создании/редактировании юнит файлов):

# systemctl daemon-reload

Запустить/остановить юнит:

# systemctl [start|stop] nginx

Включить/выключить автозапуск юнита при загрузке системы:

# systemctl [enable|disable] nginx

Список юнитов которые не запустились во время последней загрузки системы:

# systemctl --failed

journalctl

journald — пишет логи юнитов, запущенных systemd, в бинарном формате. По умолчанию в ubuntu 16.04 лежат в /run/log/journal/<machine-id>. machine-id - уникальный id-сервера, генерируется случайным образом. В 16.04 логи также пишутся с помощью rsyslogd, то есть они также достуны по старинке в /var/log

Все логи всех юнитов с момента последней загрузки:

# journalctl

Лог последней загрузки:

# journalctl -b

Список послдених загрузок системы:

# journalctl --list-boots

Лог определенной загрузки (boot-id - см. предыдущую команду):

# journalctl -b <boot-id>

Логи определенного юнита:

# journalctl -u nginx

Следить (tail -f) за логом определенного юнита:

# journalctl -f -u nginx

Посмотреть сколько занимают логи на диске:

# journalctl --disk-usage

Ограничить объем хранимых логов (journald сам занимается ротацией) можно по размеру:

# journalctl --vacuum-size=1G

Или по времени:

# journalctl --vacuum-time=1week

Как написать systemd unit-файл для автозагрузки своего сервиса