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?
źródło
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?
„kill” zabije tylko jedno okno ekranu. Aby „zabić” całą sesję, użyj quit
.
$ screen -X -S [session # you want to kill] quit
W przypadku martwych sesji użyj: $ screen -wipe
exit
działa, ale musi być wpisany na każdym ekranie, który został otwarty. quit
nawet nie działa
screen -X quit
na dowolnym terminalu kończy wszystkie aktywne sesje
Możesz zabić odłączoną sesję, która nie odpowiada w sesji ekranowej, wykonując następujące czynności.
Wpisz, screen -list
aby zidentyfikować odłączoną sesję ekranu.
~ $ screen -list Są ekrany na: 20751. Melvin_Peter_V42 (odłączony)
Uwaga: 20751.Melvin_Peter_V42
to identyfikator sesji.
Dołącz do sesji odłączonego ekranu
screen -r 20751. Melvin_Peter_V42
Po połączeniu z sesją naciśnij Ctrl+, Aa następnie wpisz:quit
quit
i :quit
prowadzić do command not found
mojej zdalnego serwera Linux (prawdopodobnie różnice między wersjami systemu operacyjnego lub ekran są winni)
exit
działa również
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
Ł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
screen -S
nie screen -r
?
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ń:
cd / tmp / uscreens / S-xxx
ls
26727.pts-0.devxxx
rm 26727.pts-0.devxxx
ls
uscreens
Katalog nie będzie miał 26727.pts-0.devxxx
plik w nim już. Teraz, aby się upewnić, po prostu wpisz:
screen -ls
i powinieneś otrzymać:
Nie znaleziono gniazd w / tmp / uscreens / S-xxx.
ps aux | grep screen
znalazłem pid i wydałem go, kill
aby go usunąć. W zależności od tego, co masz uruchomione na ekranie, możesz również mieć pliki tymczasowe i blokady do czyszczenia.
screen -wipe
Powinny wyczyścić wszystkie martwe sesje ekranu.
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, cleanscreen
aby wyczyścić całą sesję ekranu.
screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
screen -ls | tail +2 | head -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit
Dla mnie proste
exit
Pracuje. To pochodzi z sesji ekranowej.
:quit
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
== 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.
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.
screen -S sessionname -p 0 -X quit