web-dev-qa-db-fra.com

Créer un script shell à utiliser avec 'screen'?

Je travaille depuis un certain temps à la création d'un script Shell, à la navigation sur divers forums, dont celui-ci, et à l'utilisation de toutes sortes de termes de recherche, sans succès. J'espère que je ne crée pas une question en double.

Nous avons un serveur de jeu et nous devons initialiser l'écran manuellement après un redémarrage ou un crash, mais nous souhaitons regrouper nos quelques commandes dans un seul script pour réduire le temps d'indisponibilité. Ce que je voudrais faire est de créer un script qui crée une session d'écran, y bascule et exécute le script Shell dans la nouvelle session.

J'ai essayé le code ci-dessous dans le script Shell.

#!/bin/sh
screen -S tf2
./startserver.sh

Lorsque j'exécute le script, il crée l'écran 'tf2' et entre dans la session comme je le voulais. Le serveur ne démarre pas où je le voulais mais il démarre en dehors de la session d'écran où je l'ai exécuté. Nous en avons besoin dans la session d’écran pour que notre serveur de jeu puisse être en ligne sans que personne ne se présente au terminal.

Je ne suis pas encore le meilleur avec les scripts Shell, mais je suis prêt à apprendre. Est-ce que je fais quelque chose de mal? Y a-t-il un autre moyen que je devrais aborder à ce sujet?

2
S3ntri

Comme indiqué dans SYNOPSIS of man screen si vous souhaitez exécuter une commande à l'écran, celle-ci doit être ajoutée à l'écran d'émission de la commande. Donc, dans votre cas, cela ressemblerait à

 #!/bin/sh
screen -S tf2 ./startserver.sh

Pourtant comme je ne sais pas si votre script-shell est dans le répertoire de travail de screen, il est plus intelligent de le faire

 #!/bin/sh
screen -S tf2 /full/path/to/startserver.sh
3
db429