Ho provato a configurare un sistema di backup automatico per un server Minecraft e ho problemi con lo schermo, in particolare quando utilizzo 'screen -r sessionname -X “/var/minecraft/somebatchfile”', non succede nulla.
Il mio flusso di processo è un po' così al momento:
screen -m -d -S minecraft /var/minecraft/bin/server_nogui.sh
Questo avvia il server Minecraft senza alcun problema. Tuttavia, il problema è che anche semplici follow-up come questo falliscono:
screen -r minecraft -X "stop"
Non ricevo alcun messaggio di errore o messaggio di successo e il server in realtà non disconnette i client e si spegne, come dovrebbe. Presumo di aver sbagliato qualcosa, ma non so cosa. C'è qualche errore evidente che sto facendo? Ho letto un po' la pagina man ma non ho fortuna a capirlo da solo.
Risposta accettata:
Devi dare il parametro -X
una screen
comando, penso che tu voglia "riempire" un comando del server minecraft sullo screen
sessione.
screen -r minecraft -p 0 -X stuff "stop $(printf 'r')"
Il printf
invia un ritorno a capo, quindi il comando "stop" viene eseguito. -p 0
assicura che i caratteri vengano inviati alla finestra dello schermo iniziale.
Per averlo inviato tramite ssh
devi racchiudere il comando in " "
(potresti anche usare ` `
, ma questo non ti permetterebbe di eseguire la sostituzione del comando).
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')""
Attenzione a quel !
è una parola riservata, devi evitarla.
È anche possibile includere una nuova riga generata dall'utente nel comando per eseguirla:
ssh -t -i ~/.ssh/id_dsa [email protected]_address "screen -r minecraft -X stuff 'even other_server_name is getting in on the action!
'"
!
non è necessario qui.