====== Создание системного демона ====== ===== Создание сервиса ===== Необходимо создать файл: ''/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