posts projects about

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

10 апреля 2017 г. server linux systemd cheatsheet

С версии 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-файл для автозагрузки своего сервиса