Lancer une commande au démarrage dans un screen

Tags: #<Tag:0x00007f63e4573dd0> #<Tag:0x00007f63e4573c90>

Bonjour,
J’ai une machine sous debian 10
J’ai mis dessus un server minecraft et j’aimerais pouvoir lancer ce server minecraft au démarrage de ma machine.
Jusque là, je sais faire, mais je voudrais que la commande pour lancer le server (sh ServerStart.sh) se lance dans un screen pour pouvoir accéder à la console minecraft ultérieurement
Savez vous comment faire ? :slight_smile:

Bonjour,

il me semble qu’il faut agir ainsi:
screen -S nomDeTaSession

et pour te reconnecter à nomDeTaSession:
screen -r nomDeTaSession

pour info:
https://www.tecmint.com/screen-command-examples-to-manage-linux-terminals/

J’ai mis ça dans mon fichier qui est excécuté au demarrage de ma machine :

#!/bin/sh

screen -S serv
sh ~/minecraft_modde/ServerStart.sh

Le server se lance bien, mais pas dans le screen

Ben normal: ton script lance le sceen sans lui dire quoi faire, donc il se lance et il sort, puis ensuite tu lances le serveur.
Il suffit juste de dire au screen de lancer ta commande:

#!/bin/sh
screen -S serv sh ~/minecraft_modde/ServerStart.sh

Mais teste quand même avant directement hors script la commande screen -S serv sh ~/minecraft_modde/ServerStart.sh pour voir si screen arrive bien à trouver sh dans son path.

1 J'aime

Merci !
Le script marche :blush:

mais il n’est pas lancé au démarrage :sleepy:
j’ai utilisé : sudo update-rc.d run_mineserv.sh defaults

Mais au reboot, rien ne se passe

Oublie update-rc.d, ça, c’est du sysv et on est passé depuis longtemps en systemd sous debian.
Il est possible qu’en mettant ton script dans /etc/rc.local, ça puisse encore fonctionner, mais sinon, il faut que tu RTFM, donc lis ça par exemple, pour te mettre à jour:
https://doc.ubuntu-fr.org/creer_un_service_avec_systemd

Autres remarques:

  • tu ne devrais pas utiliser des ~
    executé par root, ça ne sera pas le même chemin, donc met des chemins absolu.
  • Encore mieux, je ferais un cd dans le répertoire /chemin/minecraft_modde/ et je lancerais le screen en enregistrant ce qu’il affiche dans un fichier de log (-Logfile file).
  • Le lancement de ton script est bloquant (a moins que ServerStart.sh ne sorte immédiatement), ça risque de bloquer ton boot, il faudrait le lancer en -d -m

Au final, mon script ressemblerait à ça:

#!/bin/sh
cd /chemin/minecraft_modde/
screen -d -m -S serv -Logfile minecraft.log sh ServerStart.sh