Zabij odłączoną sesję ekranu [zamknięte]

864

Nauczyłem się skądś może zabić odłączony ekran

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

skąd można uzyskać [sesję #, którą chcesz zabić]

screen -ls

Ale to nie działa. Nic złego? Jaka jest właściwa droga?

Tim
źródło
25
„gdzieś” nie zawsze jest dobrym źródłem informacji. Wypróbuj „ekran człowieka”.
innaM
27
Prawidłowe polecenie toscreen -S sessionname -p 0 -X quit
jimmetry
killall - # screen [# = liczba ekranów, które chcesz zabić]
CAnnold
Po prostu używam wyjścia
TPArrow
CTRL + D, gdy na ekranie jest najłatwiejszym poleceniem.
Don King

Odpowiedzi:

1267

„kill” zabije tylko jedno okno ekranu. Aby „zabić” całą sesję, użyj quit.

Przykład

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

W przypadku martwych sesji użyj: $ screen -wipe

innaM
źródło
112
wpisz „exit” (bez cudzysłowów) w ubuntu: P
mzalazar
16
exitdziała, ale musi być wpisany na każdym ekranie, który został otwarty. quitnawet nie działa
kapad
4
@kapad faktycznie przestaje działać, jeśli napiszesz je w wierszu -X -S zamknij pid / sockname
Eduard
20
na OSX wejście screen -X quitna dowolnym terminalu kończy wszystkie aktywne sesje
Michel
5
Ctrl + D działa również
Yi Xin
499

Możesz zabić odłączoną sesję, która nie odpowiada w sesji ekranowej, wykonując następujące czynności.

  1. Wpisz, screen -listaby zidentyfikować odłączoną sesję ekranu.

    ~ $ screen -list  
        Są ekrany na:  
             20751. Melvin_Peter_V42 (odłączony)  
    

    Uwaga: 20751.Melvin_Peter_V42to identyfikator sesji.

  2. Dołącz do sesji odłączonego ekranu

    screen -r 20751. Melvin_Peter_V42
  3. Po połączeniu z sesją naciśnij Ctrl+, Aa następnie wpisz:quit

Melvin Peter
źródło
20
możesz po prostu użyć screen -r 20751 bez pełnej nazwy
Gal Bracha,
53
lub: Ctrl + a, k
laffuste
@laffuste „s komentarz pracował dla mnie, ale quiti :quitprowadzić do command not foundmojej zdalnego serwera Linux (prawdopodobnie różnice między wersjami systemu operacyjnego lub ekran są winni)
Hack-R
po podłączeniu do ekranu exitdziała również
PankajKabra
145

Ekrany listy:

screen -list

Wynik:

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.

Sesja Kill Screen:

screen -S 23536 -X quit
nilloc
źródło
1
Działa również „screen -ls”. ;)
Atul Vaibhav
113

Łatwiej jest zabić sesję, gdy podano jakąś znaczącą nazwę:

//Creation:
screen -S some_name proc
// Kill detached session
screen -S some_name -X quit
Hitman_99
źródło
Dlaczego screen -Snie screen -r?
43 Teserakty,
1
Ta odpowiedź używa nazwy sesji, co jest o wiele wygodniejsze niż wyszukiwanie identyfikatora. Dziękuję Ci!
Paul Kenjora,
43

Możesz po prostu przejść do miejsca, w którym znajduje się sesja ekranowa i uruchomić:

 screen -ls

Co skutkuje w

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

I po prostu go usuń:

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

uscreensKatalog nie będzie miał 26727.pts-0.devxxxplik w nim już. Teraz, aby się upewnić, po prostu wpisz:

screen -ls

i powinieneś otrzymać:

Nie znaleziono gniazd w / tmp / uscreens / S-xxx.

rc2012
źródło
4
Jest to jedyne rozwiązanie, które zadziała, jeśli ekran utknie, tzn. nie martwy, ale nie można go przywiązać.
redreinard
Pomogło mi to, gdy ekran był całkowicie zablokowany, ale musiałem również znaleźć i zabić sam proces. ps aux | grep screenznalazłem pid i wydałem go, killaby go usunąć. W zależności od tego, co masz uruchomione na ekranie, możesz również mieć pliki tymczasowe i blokady do czyszczenia.
Lomky
29
screen -wipe

Powinny wyczyścić wszystkie martwe sesje ekranu.

Vishv Jeet
źródło
11
Co znaczy martwy? nie uruchamiasz żadnego programu?
Shihao Xu
1
@ShihaoXu Dead oznacza, że ​​sesja jest nieosiągalna i na lokalnym hoście (połączenie gniazda zostało przerwane). - patrz gnu.org/software/screen/manual/screen.html
iBaff
23

dodaj to do ~/.bashrc:

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

Następnie użyj, cleanscreenaby wyczyścić całą sesję ekranu.

użytkownik2115803
źródło
11
Prosty liniowiec:screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
Ariel
3
Pracowałem przysmak, ale musiałem go nieco zmodyfikować, aby działał na OSX: screen -ls | tail +2 | head -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit
Jonathan
Niewielka poprawa: -screen -ls | grep W załączeniu | cut -d. -f1 | awk „{print $ 1}” | xargs -I {} screen -d {}
Abhay Yadav
21

Dla mnie proste

exit

Pracuje. To pochodzi z sesji ekranowej.

Nick Desaulniers
źródło
2
również ctrl + a:quit
Nick Desaulniers,
2
także ctrl + a, a następnie K
Nick Desaulniers
Lub po prostu CTRL + D na ekranie
Frederik Witte
16

Aby zabić wszystkie odłączone sesje ekranu, włącz tę funkcję w pliku .bash_profile:

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

aby go uruchomić, zadzwoń killd

Rose Perrone
źródło
5
Czasami nie jest to 5 cyfr, więc używam: killd () {dla sesji w $ (screen -ls | grep -o '[0-9] \ +')) screen -S "$ {session}" -X wyjście; gotowe}
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
źródło
Czy to nie po prostu usunie gniazda, a nie zabije całego procesu?
Martin C.
Czy ta metoda jest ryzykowna z punktu widzenia tworzenia procesów zomby?
Fedir RYKHTIK
5

Alternatywnie, podczas sesji ekranowej wszystko, co musisz zrobić, to wpisać polecenie exit

To zabije sesję powłoki zainicjowaną przez ekran, co skutecznie zakończy sesję ekranu, w której się znajdujesz.

Nie musisz przejmować się identyfikatorem sesji ekranu itp.

dat789
źródło