864 Stimmen

Getrennte Bildschirmsitzung beenden

Ich habe irgendwo gelernt, dass ein abgetrennter Bildschirm getötet werden kann durch

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

wo [Sitzungsnummer, die Sie löschen wollen] abgerufen werden kann

screen -ls

Aber das funktioniert nicht. Ist irgendetwas falsch? Was ist der richtige Weg?

25 Stimmen

"irgendwo" ist nicht immer eine gute Informationsquelle. Versuchen Sie "man screen".

27 Stimmen

Der richtige Befehl lautet screen -S sessionname -p 0 -X quit

0 Stimmen

Killall -# screen [# = Anzahl der Bildschirme, die gelöscht werden sollen]

29voto

Vishv Jeet Punkte 319
screen -wipe

Sollte alles reinigen tot Bildschirm-Sitzungen.

11 Stimmen

Was bedeutet tot? Läuft kein Programm?

1 Stimmen

@ShihaoXu Tot bedeutet, dass die Sitzung unerreichbar und auf localhost ist (Socket-Verbindung ist unterbrochen). - siehe gnu.org/software/bildschirm/handbuch/bildschirm.html

23voto

user2115803 Punkte 331

Fügen Sie dies zu Ihrem ~/.bashrc :

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

Dann verwenden Sie cleanscreen um die gesamte Bildschirmsitzung zu reinigen.

11 Stimmen

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

3 Stimmen

Hat gut funktioniert, musste aber für OSX leicht modifiziert werden: screen -ls | tail +2 | head -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit

0 Stimmen

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

21voto

Nick Desaulniers Punkte 1935

Für mich ist eine einfache

exit

arbeitet. Dies geschieht innerhalb der Bildschirmsitzung.

2 Stimmen

Außerdem: Strg+a :quit

2 Stimmen

Außerdem: Strg+a, dann K

0 Stimmen

Oder einfach CTRL+D innerhalb eines Bildschirms

16voto

Rose Perrone Punkte 58235

Töten alle abgetrennten Bildschirmsitzungen, nehmen Sie diese Funktion in Ihr .bash_profile auf:

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

um es auszuführen, rufen Sie killd

5 Stimmen

Manchmal sind es keine 5 Ziffern, dann benutze ich: killd () { for session in $(screen -ls | grep -o '[0-9]\+') do screen -S "${session}" -X quit; done }

7voto

duggi Punkte 530
== 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.

0 Stimmen

Würde das nicht nur den Socket entfernen, nicht aber den dahinter liegenden Prozess abschalten?

0 Stimmen

Ist diese Methode unter dem Gesichtspunkt der Entstehung von Zombieprozessen riskant?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X