J'ai une screen
instance en cours d'exécution, et j'aurais besoin d'exécuter du code à l'intérieur de screen
, et d'obtenir le résultat sur mon script.
La première partie est assez simple, je viens screen -S session_name -X eval 'stuff "$cmd"\015'
.
(J'ai modifié une ligne que j'ai trouvée dans un script )
La deuxième partie, extraire la sortie, est plus délicate. Comment puis-je obtenir la sortie entière, quelle que soit sa taille?
bash
logs
gnu-screen
recording
1ace
la source
la source
screen -X stuff …
; une question similaire à la vôtre .stuff
, ce que j'ai eu du mal à comprendre.Réponses:
Vous pouvez commencer
screen
avec l'-L
option. Cela entraînera la création d'un fichier par l'écranscreenlog.n
(la partie n est numérique, commençant par un zéro) dans le répertoire de travail actuel.Dans votre cas, cela ressemblerait à quelque chose comme:
screen -S session_name -L -X eval 'stuff "$cmd"\015'
Tant que vous vous souvenez de nettoyer après, cela devrait correspondre à ce que vous recherchez.
Pour la dernière ligne du journal, il peut facilement être obtenu avec
tail -1 screenlog.0
, ou le journal entier peut être analysé comme vous le souhaitez.la source
screen
commande que j'ai donnée était juste d'envoyer la commande. Pour démarrer lescreen
, j'ai utiliséscreen -dmS name program
;-)Une autre nuance qui peut être utile à l'avenir: si vous êtes dans une session écran, vous pouvez demander de manière interactive la création du fichier journal. Appuyez sur ctrl- a H(Contrôle-A suivi de H majuscule) pour demander à l'écran de commencer à vider la fenêtre dans laquelle vous vous trouvez dans un fichier journal.
la source
man screen
dit, je dois taper CA H, sans le contrôle pour H. Sad seulement, que cela ne capture pas le journal précédent.