les réponses précédentes ne fonctionnaient pas pour moi sur un terminal winputty et une connexion au serveur amazon ssh .. mais celle-ci fonctionne :
screen -S yourscreentitlehere -X stuff $'\003'
références :
- Envoi de ctrl-c à une session d'écran spécifique
- $'\003' est ctrl+c http://donsnotes.com/tech/charsets/ascii.html
- les choses sont https://www.gnu.org/software/screen/manual/screen.html#Paste
J'ai utilisé ceci pour quitter des centaines de sessions d'écran erronées créées par une commande boguée :
for s in $(screen -ls|grep -o -P "1\d+.tty"); do screen -X -S $s quit; done;
où :le grep -o -P "1\d+.tty"
est la commande pour obtenir les noms de session avec un nom de type Perl regex "1\d+.tty"
qui capture toutes les sessions commençant par le numéro 1
, a d'autres nombres (\d
) et se termine par .tty
Avertissement :Vous devriez d'abord tester avec cette commande pour voir que vous obtenez la liste exacte des sessions que vous voulez avant d'appliquer la commande ci-dessus. Ceci afin d'éviter de quitter des sessions indésirables :
for s in $(screen -ls|grep -o -P "1\d+.tty"); do echo $s; done;
J'ai toujours ce echo
tester à chaque fois la liste en for
la boucle n'est pas claire, par exemple, celle générée par la sous-commande dans $()
expansion.
Il existe plusieurs façons "d'écran" de tuer une session d'écran spécifique à partir de la ligne de commande (de manière non interactive).
1) envoyer une commande 'quitter' :
screen -X -S "sessionname" quit
2) envoyer un Ctrl-C à une session screen exécutant un script :
screen -X -S "sessionname" stuff "^C"
Dans les deux cas, vous devrez utiliser 'screen -ls' pour trouver le nom de session de la session screen que vous souhaitez tuer ... s'il n'y a qu'une seule session screen en cours d'exécution, vous n'aurez pas besoin de spécifier le -S " paramètre de nom de session".
CTRL+a puis 'k' tueront une session d'écran.