Pokoušel jsem se nastavit automatický zálohovací systém pro minecraft server a mám problém s obrazovkou, konkrétně při použití 'screen -r sessionname -X “/var/minecraft/somebatchfile”' se nic neděje.
Můj procesní tok je v tuto chvíli asi takto:
screen -m -d -S minecraft /var/minecraft/bin/server_nogui.sh
Toto spustí minecraft server bez problémů. Problém je však v tom, že i jednoduchá následná opatření, jako je tato, selhávají:
screen -r minecraft -X "stop"
Nedostávám žádnou chybovou zprávu ani zprávu o úspěchu a server ve skutečnosti neodpojuje klienty a nevypíná se, jak by měl. Předpokládám, že něco dělám špatně, ale nevím co. Dělám nějakou zjevnou chybu? Trochu jsem četl manuálovou stránku, ale sám na to nemám štěstí.
Přijatá odpověď:
Musíte zadat parametr -X screen příkaz, myslím, že chcete „nacpat“ příkaz minecraft-serveru na screen relace.
screen -r minecraft -p 0 -X stuff "stop $(printf 'r')"
printf odeslat návrat vozíku, takže se provede příkaz „stop“. -p 0 zajistí, že znaky budou odeslány do úvodního okna obrazovky.
Pro odeslání přes ssh musíte příkaz uzavřít do " " (můžete také použít ` ` , ale to vám neumožní provést substituci příkazů).
ssh -t -i ~/.ssh/id_dsa [email protected]_address "screen -r minecraft -X stuff "even other_server_name is getting in on the action! $(echo -ne 'r')""
Pozor na ! je vyhrazené slovo, musíte mu uniknout.
Je také možné zahrnout uživatelem vygenerovaný nový řádek do příkazu pro jeho provedení:
ssh -t -i ~/.ssh/id_dsa [email protected]_address "screen -r minecraft -X stuff 'even other_server_name is getting in on the action!
'"
Escape ! zde není nutné.