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.
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
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
}
source .bashrc
pour rendre killscreens
disponibleMerci à @Rose Perrone, @Milind Shah et @schatten
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.
Si les écrans sont morts, utilisez:
screen -wipe
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
}
'[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.