web-dev-qa-db-fra.com

Comment tuer tous les écrans?

J'ai accidentellement créé plus de 1000 écrans. Comment puis-je tous les tuer avec une seule commande? (Ou quelques-uns)

87
BrainStone

Vous pouvez utiliser :

pkill screen

Ou

killall screen

Dans OSX, le processus est appelé SCREEN dans toutes les majuscules. Alors, utilisez:

pkill SCREEN

Ou

killall SCREEN
109
Rahul Patil

Si les écrans sont morts, utilisez:

screen -wipe
15
Adam_G

A récemment commencé à me familiariser avec awk j'ai mis cela en place et il a rempli son rôle. Je l'ai posté car il est assez facile à comprendre.

screen -ls | grep '(Detached)' | awk 'sys {screen -S $1 -X quit}'

screen -ls répertorie tous les écrans actuels. grep 'pattern' filtre toutes les lignes correspondantes. Nous pouvons alors obtenir une poignée pour tous les écrans détachés et avec awk sys {command} nous pouvons copier et coller ensemble une commande et l'exécuter avec sys, $1 fait référence au premier argument repris par awk. Enfin, nous exécutons la commande quit avec screen -X quit.

8
Eliassen
str=$(screen -ls)  

array=$(echo $str|tr "." "\n")  

for V in $array  
do  
if [ $V -gt 0  ]  
        then screen -S $V -X quit  
fi  
done 
6
Don Wei

Je suis un peu perplexe sur la façon dont vous avez réussi à créer 1000 "écrans". Pensiez-vous peut-être à 1000 fenêtres d'écran (1000 fenêtres de terminal différentes au cours d'une même session d'écran)?

Si vous vouliez dire 1000 fenêtres au cours d'une même session d'écran, alors une solution plus élégante serait de quitter l'écran en utilisant la commande C-a \ (ctrl-a suivi de \).

2
Railgun2

La commande suivante mettra fin à tous les écrans inactifs:

Perl -e 'while (map { kill 9, [split /\./]->[0] } grep { /Detached/ } split /\n/, qx{screen -ls}) { sleep 1 } exec qw(screen -wipe)'
1
Michael Vu
for scr in $(screen -ls | awk '{print $1}'); do screen -S $scr -X kill; done
0
user370823