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é.