J'ai installé un serveur Minecraft sur un système Ubuntu. Lorsque je lance le serveur à partir de la ligne de commande, le serveur écoute l'entrée standard et répond à diverses commandes (telles que le changement du mode de jeu, du niveau de difficulté ou de l'heure du jour):
(Voir cette démo pour entrer des commandes dans la console du serveur)
Je n'aime pas forcer mon utilisateur root à exécuter minecraft, donc aujourd'hui, je configure un utilisateur système nommé simplement "minecraft":
Sudo adduser --system --no-create-home --home /srv/minecraft-server minecraft
Sudo addgroup --system minecraft
Sudo adduser minecraft minecraft # this adds user "minecraft" the group "minecraft"
et j'utilise un fichier de configuration pour lancer le serveur minecraft sous cet utilisateur:
start on runlevel [2345]
console log
chdir /minecraft_server
setuid minecraft
setgid minecraft
respawn
respawn limit 20 5
exec /usr/bin/Java -Xms1024M -Xmx1800M -jar minecraft_server.1.8.jar nogui
Je souhaite envoyer des commandes au serveur Minecraft via l'entrée standard, comme je le peux lorsque je le lance sous l'utilisateur actuel. J'ai essayé su
et Sudo
, mais le premier semble être ignoré et le second génère une erreur "commande introuvable". Comme minecraft est un utilisateur du système, je suppose que la connexion interactive est désactivée.
J'ai un peu travaillé avec les systèmes Linux dans le passé, mais je suis hors de portée ici. Comment puis-je transmettre des commandes à l'utilisateur minecraft pour le transmettre au serveur minecraft? Ou n'est-ce pas possible dans ma situation actuelle?
bodhi.zazen a mentionné éventuellement "en cours d'exécution à l'écran". Je n'avais jamais entendu parler de écran avant, mais cela semble avoir résolu le problème.
Tout d'abord, je devais supprimer l'utilisateur Minecraft et le recréer en tant qu'utilisateur normal. Ensuite, j'ai donné à l'utilisateur de minecraft les autorisations nécessaires sur le dossier du serveur minecraft (à l'aide de chmod). Après avoir démarré avec succès le serveur minecraft à partir du nouveau compte utilisateur minecraft, je l'ai arrêté et démarré une session d'écran:
puis redémarrez le serveur minecraft (dans l’écran):
J'ai ensuite utilisé le raccourci d'écran standard pour me détacher de l'écran (Ctrl + a alors juste d). Le serveur minecraft continue de fonctionner en arrière-plan:
Je peux facilement rattacher des commandes en utilisant screen -r
:
Je peux mettre fin à ma session SSH sans arrêter le serveur, puis me reconnecter depuis une autre machine. Par exemple, je suis en train de me reconnecter en utilisant un téléphone Android et JuiceSSH:
(personne ne peut voir les commandes que j'ai précédemment émises, puisque l'écran n'a jamais été fermé)