Chcę, aby plik .jar był uruchamiany za każdym razem, gdy serwer uruchamia się (używamy VPS), więc edytowałem crontab, używając, crontab -e
a następnie dodając @reboot bash /home/bash/startserver.sh
. Ale nawet nie dotarłem do momentu, w którym skrypt działa.
Oto mój skrypt:
#!/bin/bash
screen -S bukkit
cd $HOME/server
java -jar bukkit.jar
Powodem, dla którego muszę użyć screen
jest to, że kiedy uruchamiam bukkit.jar, wchodzi do konsoli, gdzie mogę wprowadzić więcej poleceń dla tego programu (jestem pewien, że wszyscy znacie Minecraft i jego serwery na tej stronie, chociaż , haha), ale muszę być w stanie wykonywać inne polecenia jako root i dla innych programów podczas działania, a nawet zamknąć moją sesję PuTTY.
Jedynym problemem jest to, że po uruchomieniu tego skryptu tworzy sesję ekranową, ale jego identyfikator nie jest wymieniony screen -ls
, ponieważ identyfikator jest pusty. Zamiast tego muszę /run/screen/S-root
znaleźć identyfikator, a następnie użyć typowego screen -X -S $name quit
na nim dokumentu.
Może to nawet nie jest możliwe, a może istnieje prostszy sposób na zrobienie tego (wolałbym prostsze), ale nie mogę zrozumieć, dlaczego to nie działa. A jeśli to możliwe, czy można ponownie dołączyć do sesji screen -S bukkit
podczas uruchamiania skryptu bash? (Chyba wiele pytań, ale bardzo dziękuję za pomoc! (Nawiasy))
bukkit.sh
uruchom skrypt działający w wierszu polecenia. Następnie sprawdź, czyscreen -S bukkit path/to/bukkit.sh
działa. Następnie sprawdź, czyscreen -d -m -S bukkit path/to/bukkit.sh
działa. Na koniec ustaw crona. Najpierw wypróbuj najprostszą rzecz i zrób małe kroki, aby zrozumieć, który krok dzieli. Powiedz mi, a otrzymasz komunikat o błędzie, jeśli potrzebujesz pomocy.Należy
update-rc.d
w następujący sposób, aby włączyć usługę na starcie:źródło