Getrennte Bildschirmsitzung beenden [geschlossen]


864

Ich habe von irgendwoher gelernt, dass ein abgetrennter Bildschirm von getötet werden kann

screen -X -S [session # you want to kill] kill

woher [Sitzung #, die Sie töten möchten] kann abgerufen werden

screen -ls

Das funktioniert aber nicht. Stimmt etwas nicht? Was ist der richtige Weg?


25
"irgendwo" ist nicht immer eine gute Informationsquelle. Versuchen Sie "Mann Bildschirm".
InnaM

27
Der richtige Befehl istscreen -S sessionname -p 0 -X quit
Jimmyetry

killall - # screen [# = Anzahl der Bildschirme, die Sie töten möchten]
CArnold

Ich benutze einfach exit
TPArrow

STRG + D im Bildschirm ist der einfachste Befehl.
Don King

Antworten:


1267

"kill" beendet nur ein Bildschirmfenster. Verwenden Sie, um die gesamte Sitzung zu "beenden" quit.

Beispiel

$ screen -X -S [session # you want to kill] quit

Verwenden Sie für tote Sitzungen: $ screen -wipe


112

16
exitfunktioniert, muss aber in jeden geöffneten Bildschirm eingegeben werden. quitfunktioniert nicht einmal
Kapad

4
@kapad tatsächlich beenden funktioniert, wenn Sie es inline schreiben -X -S pid / sockname beenden
Eduard

20
unter OSX, das screen -X quitauf einem beliebigen Terminal eingeht, werden alle aktiven Sitzungen beendet
Michel

5
Strg + D funktioniert auch
Yi Xin

499

Sie können eine getrennte Sitzung beenden, die innerhalb der Bildschirmsitzung nicht reagiert, indem Sie die folgenden Schritte ausführen.

  1. Geben Sie ein screen -list, um die getrennte Bildschirmsitzung zu identifizieren.

    ~ $ Bildschirmliste  
        Es gibt Bildschirme auf:  
             20751.Melvin_Peter_V42 (freistehend)  
    

    Hinweis: 20751.Melvin_Peter_V42ist Ihre Sitzungs-ID.

  2. Werden Sie an die getrennte Bildschirmsitzung angehängt

    Bildschirm -r 20751.Melvin_Peter_V42
  3. Sobald Sie mit der Sitzung verbunden sind, drücken Sie Ctrl+ Aund geben Sie ein:quit


20
Sie können einfach Bildschirm -r 20751 ohne den vollständigen Namen verwenden
Gal Bracha

53
oder: Strg + a, k
laffuste

@laffuste ‚s Kommentar für mich gearbeitet, aber quitund :quitführen zu command not foundauf meinem Remote - Linux - Server (möglicherweise Unterschiede zwischen den Versionen des Betriebssystems oder Bildschirm sind schuld)
Hack-R

einmal an den Bildschirm angehängt, exitfunktioniert auch
PankajKabra

145

Listenbildschirme:

screen -list

Ausgabe:

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.

Bildschirm-Sitzung beenden:

screen -S 23536 -X quit

1
'screen -ls' funktioniert auch. ;)
Atul Vaibhav

113

Es ist einfacher, eine Sitzung zu beenden, wenn ein aussagekräftiger Name angegeben wird:

//Creation:
screen -S some_name proc
// Kill detached session
screen -S some_name -X quit

Warum screen -Sund nicht screen -r?
43Tesseracts

1
Diese Antwort verwendet den Namen der Sitzung, was weitaus praktischer ist als das Nachschlagen der ID. Vielen Dank!
Paul Kenjora

43

Sie können einfach zu dem Ort gehen, an dem sich die Bildschirmsitzung befindet, und Folgendes ausführen:

 screen -ls

was in ... resultiert

 There is a screen on:
         26727.pts-0.devxxx      (Attached)
 1 Socket in /tmp/uscreens/S-xxx. <------ this is where the session is.

Und entfernen Sie es einfach:

  1. cd / tmp / uscreens / S-xxx
  2. ls
  3. 26727.pts-0.devxxx
  4. rm 26727.pts-0.devxxx
  5. ls

Das uscreensVerzeichnis enthält die 26727.pts-0.devxxxDatei nicht mehr. Geben Sie jetzt Folgendes ein:

screen -ls

und du solltest bekommen:

Keine Sockets in / tmp / uscreens / S-xxx gefunden.


4
Dies ist die einzige Lösung, die funktioniert, wenn der Bildschirm "hängen bleibt", d. H. nicht tot, kann aber nicht befestigt werden.
Redreinard

Dies half mir, als der Bildschirm vollständig gesperrt war, aber ich musste auch den eigentlichen Prozess finden und beenden. ps aux | grep screenfand die pid und ich gab eine aus kill, um sie zu entfernen. Abhängig davon, was auf Ihrem Bildschirm ausgeführt wurde, müssen möglicherweise auch temporäre Dateien und Sperren bereinigt werden.
Lomky


23

füge dies zu deinem hinzu ~/.bashrc:

alias cleanscreen="screen -ls | tail -n +2 | head -n -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit"

Verwenden Sie dann, cleanscreenum alle Bildschirmsitzungen zu bereinigen.


11
Ein einfacher Einzeiler:screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
Ariel

3
Arbeitete ein Vergnügen, musste es aber leicht modifizieren, um unter OSX zu funktionieren: screen -ls | tail +2 | head -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit
Jonathan

Leichte Verbesserung: -screen -ls | grep Attached | Schnitt -d. -f1 | awk '{print $ 1}' | xargs -I {} screen -d {}
Abhay Yadav


16

Fügen Sie diese Funktion in Ihr .bash_profile ein, um alle getrennten Bildschirmsitzungen zu beenden:

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

Um es auszuführen, rufen Sie an killd


5
Manchmal sind es nicht 5 Ziffern, also benutze ich: killd () {für Sitzung in $ (Bildschirm -ls | grep -o '[0-9] \ +') mache Bildschirm -S "$ {Sitzung}" -X beenden; erledigt}
Kostyantyn

7
== 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.

Würde das nicht einfach die Steckdose entfernen und nicht den Prozess dahinter beenden?
Martin C.

Ist diese Methode unter dem Gesichtspunkt der Erstellung von Zomby-Prozessen riskant?
Fedir RYKHTIK

5

Alternativ müssen Sie während Ihrer Bildschirmsitzung nur exit eingeben

Dadurch wird die vom Bildschirm initiierte Shell-Sitzung beendet, wodurch die Bildschirmsitzung, in der Sie sich befinden, effektiv beendet wird.

Sie müssen sich nicht um die ID der Bildschirmsitzung usw. kümmern.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.