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?

Tim
quelle
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

innaM
quelle
112
Geben Sie
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

Melvin Peter
quelle
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
nilloc
quelle
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
Hitman_99
quelle
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.

rc2012
quelle
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
29
screen -wipe

Sollte alle Dead Screen-Sitzungen reinigen .

Vishv Jeet
quelle
11
Was bedeutet tot? kein Programm ausführen?
Shihao Xu
1
@ShihaoXu Dead bedeutet, dass die Sitzung nicht erreichbar und auf localhost ist (Socket-Verbindung ist unterbrochen). - Siehe gnu.org/software/screen/manual/screen.html
iBaff
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.

user2115803
quelle
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
21

Für mich ein einfaches

exit

funktioniert. Dies erfolgt innerhalb der Bildschirmsitzung.

Nick Desaulniers
quelle
2
auch Strg + a:quit
Nick Desaulniers
2
auch Strg + a, dann K
Nick Desaulniers
Oder einfach STRG + D innerhalb eines Bildschirms
Frederik Witte
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

Rose Perrone
quelle
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.
Duggi
quelle
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.

dat789
quelle