Содержание

Создание системного демона

Создание сервиса

Необходимо создать файл: /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