Справочник: systemd
systemctl
Команда Действие systemctl start svcЗапустить systemctl stop svcОстановить systemctl restart svcПерезапустить systemctl reload svcПеречитать конфиг (без остановки) systemctl enable svcВключить автозапуск systemctl disable svcОтключить автозапуск systemctl enable --now svcEnable + start systemctl status svcСтатус и последние логи systemctl is-active svcactive/inactive systemctl is-enabled svcenabled/disabled systemctl daemon-reloadПеречитать unit-файлы (после изменений! ) systemctl list-units --type=serviceЗапущенные сервисы systemctl list-unit-filesВсе сервисы (enabled/disabled) systemctl --failedСломанные systemctl mask svcПолностью заблокировать systemctl unmask svcРазблокировать
journalctl
Команда Действие journalctl -u svcЛоги сервиса journalctl -u svc -fFollow (реальное время) journalctl -u svc -n 50Последние 50 строк journalctl -u svc -p errТолько ошибки journalctl -bС последней загрузки journalctl -b -1С предпоследней загрузки journalctl --since "1h ago"За последний час journalctl --since todayЗа сегодня journalctl --disk-usageРазмер журнала journalctl --vacuum-size=500MОграничить размер journalctl --vacuum-time=2weeksУдалить старше 2 недель
Приоритеты (journalctl -p)
Приоритет Уровень Описание 0 emerg Система неработоспособна 1 alert Требуется немедленное действие 2 crit Критическая ошибка 3 err Ошибка 4 warning Предупреждение 5 notice Важное уведомление 6 info Информация 7 debug Отладка
Шаблон service-файла
# /etc/systemd/system/myapp.service
[Unit]
Description =My Application
After =network.target
Wants =postgresql.service
[Service]
Type =simple # simple | forking | oneshot | notify
User =app
Group =app
WorkingDirectory =/opt/myapp
Environment = NODE_ENV =production
EnvironmentFile =/opt/myapp/.env
ExecStart =/usr/bin/node server.js
ExecReload =/bin/kill -HUP $MAINPID
Restart =on-failure # on-failure | always | on-abnormal | no
RestartSec =5
StandardOutput =journal
StandardError =journal
[Install]
WantedBy =multi-user.target
Шаблон timer-файла
# /etc/systemd/system/backup.timer
[Unit]
Description =Daily backup
[Timer]
OnCalendar =*-*-* 03:00:00 # ежедневно в 3:00
# OnCalendar=Mon *-*-* 03:00 # каждый понедельник
# OnBootSec=5min # через 5 минут после загрузки
# OnUnitActiveSec=1h # каждый час
Persistent =true # запустить если пропустили
[Install]
WantedBy =timers.target
systemctl enable --now backup.timer
systemctl list-timers
Расположение файлов
Путь Описание /etc/systemd/system/Ваши юниты (высший приоритет) /run/systemd/system/Runtime (временные) /usr/lib/systemd/system/Юниты из пакетов (не редактировать!)
Типы сервисов (Type=)
Type Описание simpleExecStart — основной процесс (default) forkingПроцесс форкается в фон (как nginx) oneshotЗапускается и завершается (скрипты) notifyСервис сообщает о готовности через sd_notify