Что не так с моим файлом услуг Systemd?

Я пытался заставить systemd сервис работать некоторое время теперь, но без удачи. То, что я пытаюсь сделать, создают сценарий запуска, который запустит программу Java для сервера modded-Minecraft.

Вот systemd сервисный названный файл ftbstart.service. Это помещается в /etc/systemd/system/ и имеет полномочия 744 (хотя я протестировал множество различных полномочий).

[Unit]
Description=FTB Server
After=network.target

[Service]
Type=forking
User=root
Group=root
RemainAfterExit=yes

ExecStart=/usr/games/ftb/sstart.sh
ExecStop=/usr/games/ftb/sstop.sh

[Install]
WantedBy=multi-user.target

Таким образом, ExecStart запускает другой сценарий с полномочий 755 названных sstart.sh который содержит строки:

#!/bin/bash

echo I made it to 1
mount -t tmpfs -o size=1024M tmpfs /usr/games/ftb/current/
echo I made it to 2
cp -r /usr/games/ftb/beyond/. /usr/games/ftb/current/
echo I made it to 3
/usr/bin/screen -S ftb -d -m /usr/games/ftb/current/ServerStart.sh
echo I made it to 4

echos там для отладки целей. Сценарий работает полностью через, как

journalctl -u ftbstart

шоу весь echos от 1-4, однако экранируйте - список не показывает активных экранов после

systemctl restart ftbstart

Однако, если я выполняю сценарий /usr/games/ftb/sstart.sh от /bin/bash командная строка это работает превосходный и не запускает проблемы.

Вещи я попробовал до сих пор:

  • добавление #!/bin/bash к вершине ftbstart.service файл
  • удаление After=
  • изменение/удаление Type= (Type=simple и Type=forking)
  • изменение/удаление User= и Group=
  • изменение полномочий файла на обоих ftbstart.service и sstart.sh
  • помещение ExecStart=/bin/bash /usr/games/ftb/sstart.sh

Я также удостоверяюсь, что ввел:

systemctl daemon-reload

и

systemctl restart ftbstart

каждый раз я тестирую что-то в ftbstart.service файл, и т.д. и т.д. и ничто, кажется, не работает.

Я также попытался просто добавить строку

ExecStart=/usr/bin/screen -S ftb -d -m /usr/games/ftb/current/ServerStart.sh

к ftbstart.service, но это все еще не выполняет экранный сервис, но

systemctl status ftbstart

просто шоу что-то как:

Active: active (exited) since Thu 2017-09-07 20:56:35 UTC; 32min ago

Однако, если я заменяю это ExecStart= в ftbstart.service с одним таким как:

ExecStart=screen -S top -d -m /usr/bin/top

затем это ДЕЙСТВИТЕЛЬНО РАБОТАЕТ волшебно! Это создает экран, который может быть присоединен и показывает лучший монитор ресурсов командной строки.

Так, извините за долгий вопрос, но кто-либо может помочь мне выяснить то, что я делаю неправильно? Мое предположение то, что, потому что я запускаю другой сценарий, а не программу, которую что-то портит где-нибудь, но я не уверен. Спасибо за любую помощь можно обеспечить.

P.S. Если это необходимо, вот сценарий запуска, который запускается sstart.sh. Я не создал это, это - предоставленный сценарий, который шел с Minecraft modpack: https://pastebin.com/muCy0xnh

3
задан 8 September 2017 в 20:36

0 ответов

Другие вопросы по тегам:

Похожие вопросы: