Sto cercando di eseguire un server Minecraft sul mio server unRAID.
Il server verrà eseguito nella shell e quindi rimarrà lì in attesa di input. Per fermarlo, devo digitare "stop" e premere invio, quindi salverà il mondo ed uscirà con grazia, e sarò di nuovo nella shell. Funziona tutto se lo eseguo tramite telnet nella scatola del NAS, ma voglio eseguirlo direttamente sulla scatola.
questo è quello che ho avuto in precedenza come primo tentativo:
#define USER_SCRIPT_LABEL Start Minecraft server
#define USER_SCRIPT_DESCR Start minecraft server. needs sde2 mounted first
cd /mnt/disk/sde2/MCunraid
screen -d -m -S minecraft /usr/lib/java/bin/java -Xincgc -Xmx1024M -jar CraftBukkit.jar
MCunraid è la cartella in cui ho Craftbukkit.jar e tutti i file del mondo, ecc. Se digito direttamente quella riga dello schermo, lo schermo si installa staccato e il server si avvia. Se eseguo quella riga dall'interno dello script, non sembra impostare uno schermo
per arrestare il server, devo "digitare" STOP e quindi premere invio. Il mio approccio era
screen -S minecraft -X stuff "stop $(echo -ne 'r')"
per inviare allo schermo "minecraft" il testo s-t-o-p e un ritorno a capo. Ma non funziona, anche se lo digito direttamente sulla riga di comando. Ma se "screen -r" posso accedere allo schermo con il server in esecuzione, quindi digita "stop" e si spegne correttamente.
Il server funziona bene se telnet e lo faccio manualmente, devo solo eseguirlo senza essere connesso dal mio computer remoto.
Risposta accettata:
Posso risolvere almeno una parte del problema:perché il stop
la parte non funziona. Sperimentalmente, quando avvii una sessione Screen in modalità separata (screen -d -m
), non è selezionata alcuna finestra, quindi inserisci successivamente inviato con screen -X stuff
è solo perso. Devi specificare esplicitamente che vuoi inviare le sequenze di tasti alla finestra 0 (-p 0
). Questa è comunque una buona idea, nel caso in cui ti capita di creare altre finestre in quella sessione Screen per qualsiasi motivo.
screen -S minecraft -p 0 -X stuff "stop^M"
(Traduzione dello schermo ^M
to control-M che è il carattere inviato da Enter chiave.)
Il problema con l'avvio della sessione da uno script è probabilmente correlato a unMENU.
Correlati:come impedire la visualizzazione della schermata di benvenuto / schermata di blocco dopo l'inattività in Windows 8?