GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿enviar entrada de texto a una pantalla separada?

Estoy tratando de ejecutar un servidor de Minecraft en mi servidor unRAID.

El servidor se ejecutará en el shell y luego se sentará allí esperando la entrada. Para detenerlo, necesito escribir 'stop' y presionar enter, y luego salvará el mundo y saldrá con gracia, y estoy de vuelta en el caparazón. Todo eso funciona si lo ejecuto a través de telnet en la caja NAS, pero quiero ejecutarlo directamente en la caja.

esto es lo que tenía anteriormente como primer intento:

#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 es la carpeta donde tengo Craftbukkit.jar y todos los archivos del mundo, etc. Si escribo esa línea de pantalla directamente, la pantalla se desconecta y se inicia el servidor. Si ejecuto esa línea desde el script, no parece configurar una pantalla

para detener el servidor, necesito 'escribir' STOP y luego presionar enter. Mi enfoque fue

screen -S minecraft -X stuff "stop $(echo -ne 'r')"

para enviar a la pantalla 'minecraft' el texto s-t-o-p y un retorno de carro. Pero eso no funciona, incluso si lo escribo directamente en la línea de comando. Pero si 'screen -r' puedo llegar a la pantalla con el servidor en ejecución, luego escriba 'stop' y se apagará correctamente.

El servidor funciona bien si hago telnet y lo hago manualmente, solo necesito ejecutarlo sin estar conectado desde mi computadora remota.

Respuesta aceptada:

Puedo resolver al menos parte del problema:por qué stop parte no funciona. Experimentalmente, cuando inicia una sesión de Pantalla en modo separado (screen -d -m ), no se selecciona ninguna ventana, por lo que la entrada se envía más tarde con screen -X stuff simplemente se pierde. Debe especificar explícitamente que desea enviar las pulsaciones de teclas a la ventana 0 (-p 0 ). Esta es una buena idea de todos modos, en caso de que cree otras ventanas en esa sesión de pantalla por cualquier motivo.

screen -S minecraft -p 0 -X stuff "stop^M"

(Traducción de pantalla ^M a control-M que es el caracter enviado por Enter clave.)

El problema de iniciar la sesión desde un script probablemente esté relacionado con unMENU.

Relacionado:¿Cómo evitar que aparezca la pantalla de bienvenida/pantalla de bloqueo después de estar inactivo en Windows 8?
Linux
  1. Instale ownCloud 5 en Linux Mint 14

  2. ¿Enviar entrada a una sesión de pantalla desde el exterior?

  3. Cambiar el nombre de host de un servidor Linux

  4. Servidor Linux de administración

  5. enviar entrada de texto a una pantalla separada

Configuración del servidor Kali http

Cómo usar la pantalla de Linux

Cómo usar Vim Editor para ingresar texto en cualquier lugar en Linux

Instalar Velociraptor en Linux

¿Texto negro basura en la pantalla blanca en un servidor?

Servidor de monitoreo Graylog en Ubuntu Linux para servidores/servicios de monitoreo