GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:invio di input di testo a uno schermo separato?

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?
Linux
  1. Invio di input a una sessione dello schermo dall'esterno?

  2. Linux – Disabilita l'oscuramento dello schermo sulla console di testo?

  3. Modifica il nome host di un server Linux

  4. Come avviare un sistema Linux senza server grafico

  5. invio di input di testo a uno schermo separato

Configurazione del server http di Kali

Come utilizzare lo schermo Linux

Come utilizzare Vim Editor per inserire testo ovunque in Linux

Installa Velociraptor su Linux

Testo nero spazzatura su schermo bianco su un server?

Graylog Monitoring Server su Ubuntu Linux per Monitoring Server/Services