====== Создание системного демона ======
===== Создание сервиса =====
Необходимо создать файл: ''/etc/systemd/system/service-name.service''
[Unit]
Description=Supersimple daemon
[Service]
Type=simple
ExecStart=/usr/bin/daemon
[Install]
WantedBy=multi-user.target
===== Создание файла конфигураций =====
Необходимо создать файл: ''/etc/systemd/system/service-name.service.d/override.conf'' или выполнить команду ''sudo systemctl edit service-name.service'', в этом случае, файл конфигураций будет создан автоматически или откроется ранее созданный файл
[Service]
Environment="VARIABLE_NAME=value"
Environment="SECRET_NAME=Sup3rs3cret"
===== Обновить список доступных демонов =====
sudo systemctl daemon-reload
===== Использование демона =====
# Включить автозапуск
sudo systemctl enable service-name.service
# Запустить сервис
sudo systemctl start service-name.service
# Остановить сервис
sudo systemctl stop service-name.service
# Показать статус сервиса
sudo systemctl status service-name.service
# Перезагрузить сервис
sudo systemctl restart service-name.service
# Посмотреть лог сервиса
sudo journalctl -xeu service-name.service
====== Создание демона пользователя ======
===== Создание сервиса =====
Создаем директорию ''mkdir -p ~/.config/systemd/user''
Необходимо создать файл: ''~/.config/systemd/user/service-name.service''
[Unit]
Description=Supersimple daemon
[Service]
Type=simple
ExecStart=/usr/bin/daemon
[Install]
WantedBy=multi-user.target
===== Создание файла конфигураций =====
Необходимо создать файл: ''~/.config/systemd/user/service-name.service.d/override.conf'' или выполнить команду ''systemctl --user edit service-name.service'', в этом случае, файл конфигураций будет создан автоматически или откроется ранее созданный файл
[Service]
Environment="VARIABLE_NAME=value"
Environment="SECRET_NAME=Sup3rs3cret"
===== Обновить список доступных демонов =====
systemctl --user daemon-reload
===== Автоматический запуск systemd от имени пользователя =====
Пользовательский процесс systemd запускается сразу после первого входа пользователя в систему, и будет убит после завершения последнего сеанса пользователя. Иногда может быть полезно запустить службу сразу после загрузки, и поддерживать процесс systemd запущенным даже после завершения последнего сеанса пользователя, например, чтобы некоторый пользовательский процесс работал без какой-либо открытой сессии.
sudo loginctl enable-linger username
===== Использование демона =====
# Включить автозапуск
systemctl --user enable service-name.service
# Запустить сервис
systemctl --user start service-name.service
# Остановить сервис
systemctl --user stop service-name.service
# Показать статус сервиса
systemctl --user status service-name.service
# Перезагрузить сервис
systemctl --user restart service-name.service
# Посмотреть лог сервиса
journalctl --user -xeu service-name.service
====== Примеры ======
==== Springboot ====
[Unit]
Description=Java App
StartLimitIntervalSec=300
StartLimitBurst=5
[Service]
Type=simple
ExecStart=/usr/bin/java -Dfile.encoding=UTF-8 -Dspring.profiles.active=dev -jar app.jar
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target