
У меня установлен сервер, который мне всегда нужно запускать в терминале. Команда выглядит так
software server
Теперь я хочу, чтобы это работало в фоновом режиме без необходимости держать окно открытым. Я думал о создании службы. Мой software.service выглядит так
[Unit]
Description=Software Server
[Service]
Type=simple
ExecStart=/opt/software/bin/software server
Однако. Во всех службах и руководствах необходимо определить ExecStop. Как мне это сделать без реальной поддержки сервера? Могу ли я просто убить процесс при остановке?
Есть ли у вас какие-либо предложения, как решить мою проблему (не обязательно услуга)
решение1
https://www.freedesktop.org/software/systemd/man/systemd.service.html
Соответствующий фрагмент, выделено мной:
ExecStop=
Команды для выполнения, чтобы остановить службу, запущенную через ExecStart=. Этот аргумент принимает несколько командных строк, следуя той же схеме, что описана для ExecStart= выше.Использование этого параметра необязательно. После запуска команд, настроенных в этом параметре, подразумевается, что служба остановлена, а все оставшиеся для нее процессы завершаются в соответствии с настройкой KillMode= (см. systemd.kill(5)). Если эта опция не указана, процесс завершается отправкой сигнала, указанного в KillSignal= или RestartKillSignal=, при запросе остановки службы.Поддерживается подстановка спецификаторов и переменных среды (включая $MAINPID, см. выше).
Обратите внимание, что обычно недостаточно указать команду для этого параметра, которая только просит службу завершить работу (например, отправив ей некую форму сигнала завершения), но не ждет, пока она это сделает. Поскольку оставшиеся процессы служб завершаются в соответствии с KillMode= и KillSignal= или RestartKillSignal=, как описано выше, сразу после завершения команды, это может не привести к чистой остановке. Следовательно, указанная команда должна быть синхронной операцией, а не асинхронной.
Иhttps://www.freedesktop.org/software/systemd/man/systemd.kill.html#говорит нам:
По умолчанию SIGTERM.
Итак: если вы не укажете ExecStop и запустите systemctl stop software_server
SystemD, то будет выполнено действие, эквивалентное kill -15
.