web-dev-qa-db-fra.com

Tuez toutes les sessions d'écran détachées

Lorsque j'exécute screen -ls, Je vois ce qui suit. Comment puis-je tuer toutes les sessions détachées?

Il y a des écrans sur:

    84918.ttys002.ros-mbp   (Detached)

    84944.ttys008.ros-mbp   (Detached)

    84970.ttys013.ros-mbp   (Attached)

    84998.ttys002.ros-mbp   (Detached)

    85024.ttys002.ros-mbp   (Detached) 

5 Sockets dans /var/folders/86/062qtcyx2rxbnmn8mtpkyghs0r0r_z/T/.screen.

47
Rose Perrone

screen -ls | grep pts | cut -d. -f1 | awk '{print $1}' | xargs kill

Tuer niquement Détaché sessions écran (crédit @ schatten):

screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill

79
Milind Shah

Voici une solution qui combine toutes les réponses: ajoutez ceci à votre .bashrc ou .bash_profile:

killscreens () {
    screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
}
  • c'est une fonction pratique, facile à retenir
  • ne tue que les écrans détachés, pour vous empêcher de faire quelque chose de stupide
  • n'oubliez pas d'ouvrir un nouveau terminal bash ou d'exécuter source .bashrc pour rendre killscreens disponible

Merci à @Rose Perrone, @Milind Shah et @schatten

24
Edward Newell

Incluez cette fonction dans votre .bash_profile:

killd () {
    for session in $(screen -ls | grep -o '[0-9]\{4\}')
    do
        screen -S "${session}" -X quit;
    done
}

Pour l'exécuter, appelez killd. Cela tuera toutes les sessions d'écran, détachées ou non.

8
Rose Perrone

Si les écrans sont morts, utilisez:

screen -wipe
1
TransientObject

Combiner les solutions d'Edward Newell et de Rose Perrone en une solution plus lisible et "écran".

Ajoutez ci-dessous à votre .bashrc ou .bash_profile.

# function for killing all detached screen sessions
killds() {
    detached_sessions=$(screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}')
    for s in ${detached_sessions}
    do
        screen -S "${s}" -X quit;
    done
}
1
Joseph Carmack
'[0-9]\{3,\}'

en cas de

There is a screen on:
20505.blabla    (03/05/2014 22:16:25)   (Detached)
1 Socket in /var/run/screen/S-blabla.

correspondra à la fois à 20505 et à 2014, où la fermeture de 2014 renverra "Aucune session d'écran trouvée".

[0-9]\{3,\}\.\S*

pourrait fonctionner.

J'ai toujours rencontré le modèle 20505 .nom, où nom est le nom d'hôte ou le nom de session si l'écran a été lancé avec l'indicateur -S. Fonctionne sur OS X et Debian, pourrait ne pas être universel.

0
kroko