J'ai essayé de mettre en place un système de sauvegarde automatisé pour un serveur minecraft, et j'ai des problèmes avec l'écran, en particulier lorsque j'utilise 'screen -r sessionname -X "/var/minecraft/somebatchfile"', rien ne se passe.
Mon flux de processus ressemble un peu à ceci pour le moment :
screen -m -d -S minecraft /var/minecraft/bin/server_nogui.sh
Cela démarre le serveur minecraft sans aucun problème. Cependant, le problème est que même des suivis simples comme celui-ci échouent :
screen -r minecraft -X "stop"
Je ne reçois aucun message d'erreur ou message de réussite, et le serveur ne déconnecte pas réellement les clients et ne s'arrête pas, comme il se doit. Je suppose que je fais quelque chose de mal, mais je ne sais pas quoi. Y a-t-il une erreur évidente que je fais? J'ai un peu lu la page de manuel, mais je n'arrive pas à comprendre moi-même.
Réponse acceptée :
Vous devez donner le paramètre -X
un screen
commande, je pense que vous voulez "fournir" une commande minecraft-server à l'screen
séance.
screen -r minecraft -p 0 -X stuff "stop $(printf 'r')"
Le printf
envoyer un retour chariot, de sorte que la commande "stop" soit exécutée. -p 0
s'assure que les caractères sont envoyés à la fenêtre d'écran initiale.
Pour l'envoyer via ssh
vous devez enfermer la commande dans " "
(vous pouvez également utiliser ` `
, mais cela ne vous permettrait pas de faire la substitution de commande).
ssh -t -i ~/.ssh/id_dsa [email protected]_address "screen -r minecraft -X stuff "even other_server_name is getting in on the action! $(echo -ne 'r')""
Méfiez-vous de cela !
est un mot réservé, vous devez l'échapper.
Il est également possible d'inclure une nouvelle ligne générée par l'utilisateur dans la commande pour l'exécuter :
ssh -t -i ~/.ssh/id_dsa [email protected]_address "screen -r minecraft -X stuff 'even other_server_name is getting in on the action!
'"
Échappement de !
n'est pas nécessaire ici.