J'ai appris de quelque part qu'un écran détaché peut être tué par
screen -X -S [session # you want to kill] kill
où [la session que vous voulez tuer] peut être obtenue
screen -ls
Mais ça ne marche pas. Quelque chose ne va pas? Quelle est la bonne façon?
"tuer" ne tuera qu'une fenêtre à l'écran. Pour "tuer" la session complète, utilisez quit
.
$ screen -X -S [session # you want to kill] quit
Pour les sessions mortes, utilisez: $ screen -wipe
Vous pouvez tuer une session détachée qui ne répond pas dans la session écran en procédant comme suit.
Tapez screen -list
pour identifier la session d'écran détachée.
~ $ screen -list Des écrans sont disponibles sur: 20751.Melvin_Peter_V42 (Détaché)
Remarque: 20751.Melvin_Peter_V42
est votre identifiant de session.
Connectez-vous à la session d'écran séparée
screen -r 20751.Melvin_Peter_V42
Une fois connecté à la session, appuyez sur Ctrl + A puis tapez :quit
Écrans de liste:
screen -list
Sortie:
There is a screen on:
23536.pts-0.wdzee (10/04/2012 08:40:45 AM) (Detached)
1 Socket in /var/run/screen/S-root.
Kill screen session:
screen -S 23536 -X quit
Il est plus facile de tuer une session quand un nom significatif est donné:
//Creation:
screen -S some_name proc
// Kill detached session
screen -S some_name -X quit
Vous pouvez simplement aller à l’endroit où la session d’écran est hébergée et exécuter:
screen -ls
qui se traduit par
There is a screen on:
26727.pts-0.devxxx (Attached)
1 Socket in /tmp/uscreens/S-xxx. <------ this is where the session is.
Et simplement l'enlever:
cd/tmp/uscreens/S-xxx
ls
26727.pts-0.devxxx
26727.pts-0.devxxx
ls
Le répertoire uscreens
n'aura plus le fichier 26727.pts-0.devxxx
. Maintenant, assurez-vous de taper ceci:
screen -ls
et vous devriez obtenir:
Aucune prise trouvée dans/tmp/uscreens/S-xxx.
screen -wipe
Devrait nettoyer toutes les morts sessions d’écran.
ajoutez ceci à votre ~/.bashrc
:
alias cleanscreen="screen -ls | tail -n +2 | head -n -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit"
Puis utilisez cleanscreen
pour nettoyer toutes les sessions d’écran.
Pour moi un simple
exit
travaux. Ceci est dans la session d'écran.
Pour tuer toutes sessions d'écran séparées, incluez cette fonction dans votre .bash_profile:
killd () {
for session in $(screen -ls | grep -o '[0-9]\{5\}')
do
screen -S "${session}" -X quit;
done
}
pour l'exécuter, appelez killd
== ISSUE THIS COMMAND
[xxx@devxxx ~]$ screen -ls
== SCREEN RESPONDS
There are screens on:
23487.pts-0.devxxx (Detached)
26727.pts-0.devxxx (Attached)
2 Sockets in /tmp/uscreens/S-xxx.
== NOW KILL THE ONE YOU DONT WANT
[xxx@devxxx ~]$ screen -X -S 23487.pts-0.devxxx kill
== WANT PROOF?
[xxx@devxxx ~]$ screen -ls
There is a screen on:
26727.pts-0.devxxx (Attached)
1 Socket in /tmp/uscreens/S-xxx.
Alternativement, pendant votre session écran, tout ce que vous avez à faire est de taper exit
Cela va tuer la session Shell initiée par l'écran, ce qui met effectivement fin à la session d'écran sur laquelle vous êtes.
Pas besoin de s'embêter avec l'identifiant de session écran, etc.