GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Envoi d'une entrée de texte à un écran détaché ?

J'essaie d'exécuter un serveur minecraft sur mon serveur unRAID.

Le serveur s'exécutera dans le shell, puis restera là en attendant une entrée. Pour l'arrêter, je dois taper "stop" et appuyer sur Entrée, puis cela sauvera le monde et sortira gracieusement, et je suis de retour dans le shell. Tout fonctionne si je l'exécute via telnet dans la boîte NAS, mais je veux l'exécuter directement sur la boîte.

c'est ce que j'avais précédemment comme première tentative :

#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 est le dossier où j'ai le Craftbukkit.jar et tous les fichiers du monde, etc. Si je tape directement cette ligne d'écran, l'écran se détache et le serveur se lance. Si j'exécute cette ligne à partir du script, il ne semble pas créer d'écran

pour arrêter le serveur, je dois "taper" STOP puis appuyer sur Entrée. Mon approche était

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

pour envoyer à l'écran 'minecraft' le texte s-t-o-p et un retour chariot. Mais cela ne fonctionne pas, même si je le tape directement sur la ligne de commande. Mais si je "screen -r", je peux accéder à l'écran avec le serveur en cours d'exécution, puis tapez "stop" et il s'arrête correctement.

Le serveur fonctionne bien si je me connecte par telnet et que je le fais manuellement, il suffit de l'exécuter sans être connecté depuis mon ordinateur distant.

Réponse acceptée :

Je peux résoudre au moins une partie du problème :pourquoi le stop pièce ne fonctionne pas. Expérimentalement, lorsque vous démarrez une session Screen en mode détaché (screen -d -m ), aucune fenêtre n'est sélectionnée, donc l'entrée est envoyée plus tard avec screen -X stuff est juste perdu. Vous devez spécifier explicitement que vous souhaitez envoyer les frappes à la fenêtre 0 (-p 0 ). C'est une bonne idée de toute façon, au cas où vous créeriez d'autres fenêtres dans cette session Screen pour une raison quelconque.

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

(Traduction de l'écran ^M à control-M qui est le caractère envoyé par la Entrée clé.)

Le problème de démarrage de la session à partir d'un script est probablement lié à unMENU.

Connexe :Comment empêcher l'écran de bienvenue/écran de verrouillage d'apparaître après une inactivité dans Windows 8 ?
Linux
  1. Installer ownCloud 5 sur Linux Mint 14

  2. Linux - Désactiver le masquage d'écran sur la console texte ?

  3. Modifier le nom d'hôte d'un serveur Linux

  4. Serveur Linux d'administration

  5. Sélectionnez du texte à l'aide du clavier dans le shell Linux

Configuration du serveur http Kali

Comment utiliser l'écran Linux

Comment utiliser l'éditeur Vim pour saisir du texte n'importe où sous Linux

Installer Velociraptor sur Linux

Garbage Black Text sur écran blanc sur un serveur ?

Serveur de surveillance Graylog sur Ubuntu Linux pour la surveillance du serveur/des services