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 ?