Comment puis-je créer un script de GNU Écran pour commencer avec un programme en cours d'exécution à l'intérieur de sorte qu'il ne ferme pas la session sur l'achèvement du programme?
Comment puis-je créer un script de GNU Écran pour commencer avec un programme en cours d'exécution à l'intérieur de sorte qu'il ne ferme pas la session lorsque le programme se termine?
Je veux lancer un programme interactif en tant que démon, si je manuellement à l'écran de démarrage, puis de lancer ce programme à l'intérieur d'elle tout fonctionne comme je veux. Si le programme s'arrête ou se bloque à l'écran de session reste et je peux la regarder pour voir ce qui s'était passé. Cependant, si j'ai démarrer le programme avec un simple lancement de l'écran alors qu'il ne s'exécutent à l'intérieur de l'écran, mais lorsque le programme quitte l'écran de fin de session, toute sortie du programme est perdu.
Donc screen –dmS serverName serverApplication
ne fonctionne pas pour mon scénario. Je n'ai penser a faire un script qui lance le programme je veux courir & puis dort jamais, que je ne puis lancer le script en même temps que l'écran et doit obtenir l'effet que je cherche mais il semble plutôt un désordre façon de faire les choses et je suis sûr qu'il y a quelque chose de plus élégant.
J'ai lu assez peu de l'écran de tutoriels et chaluté par le biais de la page de man, mais rien ne saute aux yeux que la bonne façon de le faire. Je n'essayez –X mais c'est pour les commandes de l'écran, pas de commandes en cours d'exécution à l'intérieur de l'écran de session... Toutes les suggestions seront très apprécié; je suis même heureux d'utiliser autre chose que GNU Écran si il est un meilleur outil pour une utilisation dans des scripts mais s'il vous plaît donnez-moi un exemple où c'est possible.
(Note: Les deux choses que je vais être en cours d'exécution avec une minecraft_server et un mythtv_backend. Mon plan était de lancer ces à partir d'un chron d'emploi au démarrage par l'intermédiaire ruby/script bash)
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous aurez envie de commencer un démon de session screen juste en cours d'exécution de votre shell par défaut:
Ensuite, envoyez votre commande pour que shell à l'aide de l'écran de
stuff
en combinaison avec-X
:La
-p
est important de dire à l'écran dans la fenêtre à l'intérieur de cette session de la farcir de la commande. Dans ce cas, c'est la seule fenêtre, 0,, mais si vous ne spécifiez pas que, pour une raison étrange, votre commande vous aller nulle part. Le$(printf \\r)
envoie un "Retour" de frappe. Régulièrement\n
peut travailler à sa place, mais J'ai lu que shell-dépendante. Le caractère de saut de ligne ne fonctionne pas en bash; je peux en témoigner.Voici un autre truc génial. Si vous souhaitez ensuite faire une autre fenêtre de l'écran à l'intérieur de cette session, vous pouvez:
Maintenant, vous pouvez envoyer des commandes à un seul en utilisant la même syntaxe que ci-dessus, mais avec
-p 1
. Beaucoup de plaisir.-p 0
paramètre et cela signifie que je ne vois pas l' $(printf \\r) pour obtenir un script à exécuter. ` $ screen-dmS "serverName" $ screen-S "serverName" -p 0 -X exec severApplication`$(print \\r)
, essayez de chaîne d'extension en bash:screen -S serv -p 0 -X stuff $'echo hello world\n'