J'essaie d'écrire un script pour:
screen
J'ai essayé toutes sortes de combinaisons avec screen -X program
ou screen -S somename
suivi de program
suivi de screen -D
, en combinant avec -d
ou -m
options qui Je trouve dans les questions et réponses liées mais rien ne fonctionne.
Le plus proche que j'ai pu obtenir était la suivante:
screen -S MySessionName -d -m myprogram
Ceci lance une nouvelle session d’écran dans le motif, exécutant myprogram
. Sauf dès que myprogram
finit (parfois instantanément) la session d’écran se termine, alors que je veux la garder en marche.
Méthode 1
J'ai créé une configuration de démonstration que vous avez décrite ici sur ma machine. J'ai également fait face au problème que vous avez signalé. Mais l’ajout d’une petite ligne de script
a résolu mon problème.
J'ai ajouté la ligne suivante à la fin de myprogram
exec $Shell
Une fois votre script terminé, le processus Bash se remplace par une nouvelle invocation de lui-même.
Méthode 2
Ou vous pouvez essayer la méthode suivante dans laquelle nous commençons un detached screen
et envoyons une commande à cet écran en utilisant stuff
Pour cela, vous devez d'abord démarrer un écran détaché.
screen -dmS MySessionName
Et ensuite envoyez le script à cet écran.
screen -S MySessionName -p 0 -X stuff 'myprogram\n'
Cela a également fonctionné pour moi.