web-dev-qa-db-fra.com

Comment interagir avec un script lancé par rc.local?

J'ai un script qui s'exécute à partir de rc.local (un serveur Minecraft dans ce cas) avec lequel j'ai besoin de pouvoir interagir (se connecter ultérieurement à ses STDIN et STDOUT). Comment puis-je faire ceci?

6
Th3Harbinger

Ce que vous voulez faire, c'est utiliser screen. Il permet de générer un processus dans sa session et de s'en détacher. Essentiellement, votre question est similaire à this .

Les 3 étapes que vous voulez faire:

  • La ligne ci-dessous doit aller dans votre /etc/rc.local. Ajoutez le signe & à la fin (important!)

    screen -S MyMinecraftServer -d -m  Java -jar ./SOMEFILES/CLEANUP/minecraft_server.1.8.8.jar nogui   
    
  • Voici ce que vous feriez en ligne de commande pour trouver votre session:

    screen -ls
    

    Exemple de sortie:

    There is a screen on:
        1720.MyMinecraftServer  (2017年01月12日 13时54分36秒) (Detached)
    1 Socket in /var/run/screen/S-xieerqi.
    
  • Et voici comment vous y attachez:

    screen -x 1720.MyMinecraftServer
    

REMARQUE: le démarrage du serveur minecraft à partir de /etc/rc.local peut être un trou de sécurité potentiel. Pensez à utiliser su username -c '<screen command here>' & pour exécuter le serveur en tant qu'utilisateur différent. Voir aussi: https://serverfault.com/a/422952/363611

7
Sergiy Kolodyazhnyy