Я пытался заставить 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