Je voudrais lancer une application à l'intérieur d'une session écran mais à partir d'un script.
Sans script, je lancerais simplement l'écran, puis ouvrirais N fenêtres avec crtl-ac et exécuterais des programmes dans chaque fenêtre.
J'ai essayé ce qui suit
screen -d -m -S test
screen -S test -X exec tail -f /var/log/messages
screen -S test -X screen
screen -S test -X exec tail -f /var/log/xinetd.log
Mais quand j'attache la queue de session ne fonctionne pas. Si j'attache la session juste après screen -d -m -S startup
et que je l' exécute à screen -S startup -X exec tail -f /var/log/messages
partir d'un autre terminal, cela fonctionne.
Ai-je oublié quelque chose ?
Modifier après la réponse d'AlexD:
Une solution à moitié fonctionnelle est
screen -d -m -S test tail -f /var/log/messages
screen -S test -X screen tail -f /var/log/xinetd.log
Le chaînage de la commande d'écran (celle après -X) avec la commande fonctionne alors que exec n'est probablement pas parce que exec attend une fenêtre actuelle à définir alors qu'il n'y en a pas une lorsque l'écran est détaché. Merci à AlexD pour ces conseils.
Mais il y a un effet secondaire étrange: lorsque le programme s'arrête (si vous attachez la session d'écran et crtl-c la queue, ou tuez la queue), la fenêtre d'écran se fermera.
Donc, le comportement n'est pas le même que Crtl-A c et exécutez la commande
Un autre effet secondaire est que vous ne pouvez pas enchaîner 2 commandes
screen
se termine toujours lorsque la commande qui a été lancée se termine - c'est une fonctionnalité normale de l'outil :) .. donc si vous exécutezscreen top
, lorsque vous quitteztop
, sescreen
fermera aussi