J'essaie d'exécuter un serveur Minecraft sur mon serveur unRAID.
Le serveur s'exécutera dans le shell, puis attendra une entrée. Pour l'arrêter, je dois taper 'stop' et appuyer sur entrée. Le logiciel sauvera le monde et sortira avec élégance. Je suis de retour dans le shell. Tout cela fonctionne si je le lance via Telnetting dans la boîte NAS, mais je veux le lancer directement sur la boîte.
Voici ce que j’avais eu lors d’une 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ù se trouvent Craftbukkit.jar et tous les fichiers du monde, etc. Si je tape directement cette ligne d'écran, la configuration de l'écran est détachée et le serveur se lance. Si j'exécute cette ligne depuis le script, il ne semble pas y avoir d'écran
pour arrêter le serveur, je dois «taper» dans STOP, puis appuyer sur Entrée. Mon approche était
screen -S minecraft -X stuff "stop $(echo -ne '\r')"
envoyer à l'écran 'minecraft' le texte 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 taper «stop» et il s'arrête correctement.
Le serveur fonctionne bien si je me connecte par telnet et manuellement, il suffit de l’exécuter sans être connecté à partir de mon ordinateur distant.
#!/bin/bash
et set -x
en haut du script, et nous montrer la sortie de trace à partir du script. Vous devrez peut-être consulter la documentation unMENU pour savoir où cette sortie est envoyée.
screen
n'a pas commencé? Essayez d’ajouterset -x
en haut du script (juste après la#!
ligne) et de signaler la sortie de trace lorsque vous exécutez le script.