Przypadkowo stworzyłem ponad 1000 ekranów. Jak zabić ich wszystkich za pomocą jednego polecenia? (Lub kilka)
linux
bash
gnu-screen
kill
BrainStone
źródło
źródło
screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
screen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
Odpowiedzi:
Możesz użyć :
Lub
W OSX proces nazywa się SCREEN we wszystkich wielkich literach. Więc użyj:
Lub
źródło
Top
Jeśli ekrany nie działają, użyj:
źródło
źródło
Niedawno zacząłem zapoznawać się z awk. Złożyłem to i spełniło swoje zadanie. Opublikowałem go, ponieważ jest dość łatwy do zrozumienia.
screen -ls | grep '(Detached)' | awk 'sys {screen -S $1 -X quit}'
Gdzie
screen -ls
wyświetla listę wszystkich aktualnych ekranów.grep 'pattern'
odfiltrowuje wszystkie pasujące wiersze. Możemy wtedy uzyskać uchwyt dla wszystkich odłączonych ekranów, a następnieawk sys {command}
możemy skopiować i wkleić razem polecenie i wykonać jesys
,$1
odnosi się do pierwszego argumentu wyłapanego przez awk. Na koniec wykonujemy polecenie quit za pomocąscreen -X quit
.źródło
screen -ls | grep '(Detached)' | awk '{print $1}' | xargs -I % -t screen -X -S % quit
pracował dla mnie lepiej.Jestem trochę zdziwiony tym, jak udało ci się stworzyć 1000 „ekranów”. Czy miałeś na myśli 1000 okien ekranowych (1000 różnych okien terminali w ramach jednej sesji ekranowej)?
Jeśli miałeś na myśli 1000 okien w sesji jednego ekranu, bardziej eleganckim rozwiązaniem byłoby zamknięcie ekranu za pomocą polecenia
C-a \
(ctrl-a, po którym następuje \).źródło
screen -m sleep 100000
. Stało się to i nie zauważyłem, dopóki nie utworzyłem już ponad 1000 sesji ekranowych.Następujące polecenie zakończy wszystkie nieaktywne ekrany:
źródło
źródło