tuer une session d'écran

66

J'essaie de tuer une session d'écran. J'ai remarqué beaucoup d'autres questions connexes, mais aucune de ces réponses ne fonctionne pour moi. J'essaie de tuer la session suivante:

screen -ls
There is a screen on:
    23520.pts-6.porkypig    (09/30/2013 02:49:47 PM)    (Detached)
1 Socket in /var/run/screen/S-root.

screen -r 23520.pts-6.porkypig

Maintenant je suis en session. Selon la documentation:

http://www.gnu.org/software/screen/manual/screen.html#Quit

Je suis censé appuyer sur "control a" puis sur "control \". Je fais ça et rien ne se passe.

Une autre solution a dit d'appuyer sur Ctrl+ aet tapez: quitter. Cependant, encore une fois, cela ne fait rien. En fait, en appuyant sur control+ a, il ne se passe absolument rien par la suite, sauf le message "Aucune autre fenêtre"

JohnMerlino
la source
1
dans l'écran v4.x, pour tuer toutes les sessions,ps aux | grep "SCREEN" | awk '{print $2}' | xargs kill
Fredrick Gauss
2
Pour mémoire, vous pouvez simplement faire screen -r porkypigou screen -r 23520plutôt que d’avoir à inclure la chaîne complète. Les noms d'écran sont supposés faciliter les choses, pas plus compliqués.
Mikkel

Réponses:

73

vous devez d’abord vous reconnecter à la session d’écran
screen -r 23520comme vous l’avez fait. Puis appuyez sur ctrl+ apuis sur une majuscule Ket appuyez sur yquand il vous demande si vous voulez vraiment tuer la session

Jacob Minshall
la source
2
Cela fonctionne s'il y a un problème avec un processus exécuté dans l'écran, mais pas s'il y a un problème avec l'écran lui-même. C'est le cas 99% du temps et présente l'avantage supplémentaire de n'affecter qu'une seule fenêtre de l'écran au lieu de toutes les fermer.
Mikkel
1
C'est pour tuer une fenêtre, pas une session
Eric Wang
57

Vous pouvez quitter cet écran sans vous y attacher. Tout d'abord, trouvez sa session:

$ screen -ls

et puis le quitter:

$ screen -XS [session # you want to quit] quit

(-X = commande Execute, PID de session -S à exécuter)

[MISE À JOUR]

Exemple:

screen -XS 20411 quit
shgnInc
la source
1
C'était assez simple. Vous pouvez le simplifier encore plus en combinant le -X -S avec -XS
AJ.
2
Vous devriez donner crédit à innaM answer si vous le copiez
Martin Thoma,
8

Cela va tuer tous les écrans détachés:

écran -ls | grep détaché | coupé -d. -f1 | awk '{print $ 1}' | xargs tuer

Cela va tuer tous les écrans, attachés ou détachés

écran -ls | grep pts | coupé -d. -f1 | awk '{print $ 1}' | xargs tuer
utilisateur324207
la source
7

Donc, avec toutes ces suggestions officielles, passons à quelque chose de plus simple, tout aussi efficace et de plus en plus simple.

pkill screen

Qui veut accéder à un écran inconnu et inutile pour appuyer quelques commandes dont la plupart pourraient à peine se souvenir? Cela évite d'y entrer et le tue immédiatement.

De plus, si vous en avez plus d'un, cela les prendra tous d'un coup.

Brian Thomas
la source
1
Notez que cela supprimera tous les écrans en cours d'exécution, ce qui peut être ou ne pas être ce que vous voulez.
Mikkel
Pas un bon choix. Je le fais depuis quelque temps. Parfois, cela provoque de mauvais comportements (par exemple, vous déconnecter immédiatement de votre compte utilisateur). En outre, comme @Mikkel l'a mentionné, cela pourrait entraîner la fermeture de tous vos écrans, ce qui ne serait pas ce que vous souhaitiez. Parfois, vous devez continuer à en exécuter (certains fonctionnent par système) et arrêter d’autres écrans.
MAChitgarha
2

J'ai rencontré ce problème lors de la mise à jour de l'écran. La screencommande se bloquerait lorsque vous tenteriez de rattacher la session, quel que soit le nombre -Dou le nombre -Rajouté à la commande. Cependant, screen -lsfournit commodément le pid de la session, vous permettant d’intervenir en utilisant les éléments suivants:

10:42 user ~ $ screen -ls
There is a screen on:
        5730.my_screen     (Detached)
1 Socket in /tmp/screens/S-user.

10:42 user ~ $ sudo kill 5730

10:43 user ~ $ screen -ls
No Sockets found in /tmp/screens/S-user.

(Ceci est similaire à la réponse de Brian Thomas, mais sa volonté va tuer toutes les sessions d'écran en cours, ce qui peut ne pas être ce que vous voulez si vous avez plusieurs écrans ouverts mais un seul se comporte mal.)

Mikkel
la source
Après 6 heures, je me suis retrouvé face à face sur Internet ... la seule réponse qui a fonctionné. Merci mon pote!
kRazzy R
1

Comme vous, je voulais tuer ma session d’écran et j’ai trouvé la documentation inutile. Convaincu qu'il doit être un raccourci clavier, je trouve que
ctrl + apuis \
œuvres

Je reçois alors l’invite: "Arrête vraiment et tue toutes tes fenêtres [y \ n]"

Je ne sais pas pourquoi la documentation dit ctrl + aalors ctrl + \. Cela ne fait rien pour moi.

lizp
la source
1

Vous pouvez trouver l'ID de processus de l'écran en cours joint. Je l'ai trouvé identique à l'identifiant de session que vous pouvez obtenir par commande:
screen -ls
Et vous pouvez utiliser la commande suivante pour tuer ce processus:
kill [sessionId]ou
sudo kill [sessionId]
Vous pouvez tuer l'écran même s'il est attaché sur une autre fenêtre de terminal.

Siddhant
la source
0

Appuyez sur ctrl + d pour tuer la fenêtre d’écran. Répétez cette opération jusqu'à ce que toutes les fenêtres d'écran soient supprimées. Une fois que vous avez épuisé toutes les fenêtres, l'écran tue la session et se termine. La solution la plus courte si vous n'avez pas beaucoup de fenêtres

Dilushan
la source