Je travaille sur l'automatisation d'une routine de maintenance qui implique le démarrage et l'arrêt d'un script en cours d'exécution dans une session d'écran. Mon approche consiste à tuer la session d'écran, puis à la redémarrer et à exécuter la commande à partir d'un script en utilisant les capacités à la fois pour créer un écran et passer une commande sans avoir besoin de l'attacher à l'écran.
Cependant, j'ai des difficultés avec cela. Je peux créer l'écran correctement sans qu'il soit attaché à l'aide screen -d -m -S screen_name
. Cependant, si j'exécute une commande basée sur:
screen -S screen_name-X stuff "command 1"'echo -ne '\015''"command 2"'echo -ne '\015''
avec l'écho -ne '\ 015' entouré de guillemets plutôt que de guillemets simples. Il s'agit de simuler l'utilisateur en appuyant sur la touche Entrée lorsque les commandes que j'utilise se déplacent vers un répertoire et exécutent un script qui s'y trouve. Cette commande fonctionne, mais uniquement si l'écran a été attaché à une fois qu'il a été créé. Comme j'essaie d'automatiser le processus de création de l'écran et d'exécution des commandes qu'il contient, je voudrais éviter d'avoir à attacher et à détacher dans un script. J'essaierai la suggestion de créer un script shell contenant les commandes dont j'ai besoin pour exécuter dans l'écran et éditer en fonction de mes résultats.
Existe-t-il un moyen de créer un écran et d'exécuter une commande à l'intérieur de l'écran, soit en une seule commande, soit sans avoir à l'attacher à l'écran après la création mais avant l'exécution de la commande?
Merci d'avance.
** Mise à jour - après avoir essayé la suggestion de placer les commandes dont j'ai besoin pour exécuter dans un script shell, j'ai réussi à créer un écran et à exécuter les commandes à partir de l'écran, mais je reçois le comportement que lorsque le script cesse de s'exécuter l'écran se ferme également. Cela ne devrait pas être un problème car le script est un script de journalisation qui ne doit s'arrêter qu'avec la connaissance de l'administrateur système ou via le script que j'essaie de développer, mais il serait préférable d'avoir la configuration de l'écran de telle sorte que l'écran ne disparaît pas si le script est arrêté. Est-il possible d'obtenir ce comportement? **
.screenrc
qui contient la ligne zombie kr
, qui gardera une fenêtre terminée ouverte, et vous pouvez appuyer sur k
pour fermer le winodw, ou r
pour exécuter à nouveau la commande dans la fenêtre. J'ai ceci pour mon .screenrc par défaut.