Шпаргалка по systemd (systemctl)
Запуск/остановка/включение/отключение сервиса:
systemctl start sshd systemctl stop sshd systemctl enable sshd systemctl disable sshd
Статус сервиса и список сервисов
systemctl list-unit-files systemctl list-units systemctl status sshd journalctl -xe
Как изменить скрипты запуска systemd
Основные каталоги, где хранятся юниты:
/usr/lib/systemd - тут хранятся юнит-файлы, которые установлены из пакетов /etc/systemd - сдесь ссылки на вышеуказанные юнит-файлы, а так-же юнит-файлы, кторые создает пользователь.
Свои юнит-файлы следует класть в папку /etc/systemd/system
Если нам не нравится юнит-файл, который был поставлен из пакета, его можно изменить двумя способами:
полное owerride:
Копируем юнит-файл из /usr/lib/systemd/system
в /etc/systemd/system
и правим как хотим. Файл в /etc/systemd/system
полностью заменяет (т.е. он главнее), файл в /usr/lib/systemd/system
.
Миннус - при апгрейде новый юнит файл, который из пакета не будет применен, а там могут оказаться важные опции без которых новая версия не стартует.
частичное owerride:
Cоздаем папку /etc/systemd/system/<имя_юнита>.service.d/
в этой папке делаем файл override.conf
, в котором указываем только те опции, которые хотим изменить.
Тут есть нюансы!
- В файле
override.conf
кроме самих опций нужно указать имя раздела - Для опций, которые могут быть объявлены много раз (ExecStart, After, Environment), нужно сперва очистить содержимое.
Пример override.conf
для юнита sshd
, если мы хотим включить режим debug:
[service] ExecStart= ExecStart=/usr/sbin/sshd -d -D $OPTIONS
После внесения изменений нужно их загрузить командой:
systemctl daemon-reload
Отобразить содержимое юнита:
systemctl cat sshd
Изменить содержимое юнита можно так-же командой:
systemctl edit sshd
команда откроет файл override.conf
в редакторе vi
Как создать скрипт запуска systemd
Пример юнит-файла /etc/systemd/system/rclocal.service
[Unit] Description=/etc/rc.local Compatibility ConditionFileIsExecutable=/etc/rc.local [Service] Type=simple ExecStart=/etc/rc.local Restart=always StandardOutput=journal # WorkingDirectory=/tmp # Environment=TERM=LD_LIBRARY_PATH="/usr/local/lib" [Install] WantedBy=multi-user.target
Настройка демона journald
С настройками по умолчанию журналы systemd склонны пожирать все свободное место на диске, обязательно нужно настраивать!
Я делаю примерно так /etc/systemd/journald.conf
:
[Journal] Compress=yes SystemMaxUse=500M SystemMaxFileSize=100M MaxRetentionSec=30day
после чего перезапустить демон
systemctl restart systemd-journald
Очистка логов вручную:
journalctl --vacuum-size=50M