Yanlışlıkla 1000'den fazla ekran oluşturdum. Hepsini tek bir komutla nasıl öldürebilirim? (Ya da birkaçı)
screen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
Yanlışlıkla 1000'den fazla ekran oluşturdum. Hepsini tek bir komutla nasıl öldürebilirim? (Ya da birkaçı)
screen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
Yanıtlar:
Kullanabilirsiniz :
pkill screen
Veya
killall screen
OSX'te, işlemin tümü büyük harflerle EKRAN olarak adlandırılır. Yani, kullanın:
pkill SCREEN
Veya
killall SCREEN
Top
Son zamanlarda kendimi awk ile tanıştırmaya başladım. Bunu bir araya getirdim ve bu amacına hizmet etti. Anlaşılması oldukça kolay olduğu için gönderdim.
screen -ls | grep '(Detached)' | awk 'sys {screen -S $1 -X quit}'
Nerede screen -ls
mevcut tüm ekranlar listeler.
grep 'pattern'
eşleşen tüm satırları filtreler. Daha sonra tüm ayrılmış ekranlar için bir tanıtıcı awk sys {command}
bulabiliriz ve birlikte bir komutu kopyalayıp yapıştırabiliriz ve birlikte çalıştırabiliriz sys
, $1
awk tarafından alınan ilk argümanı ifade eder. Sonunda quit komutunu birlikte uygularız screen -X quit
.
screen -ls | grep '(Detached)' | awk '{print $1}' | xargs -I % -t screen -X -S % quit
benim için daha iyi çalıştı.
1000 "ekran" oluşturmayı nasıl başardığın konusunda biraz şaşırdım. Şunu mu demek istediniz: 1000 screen window (tek bir ekran oturumunda 1000 farklı terminal penceresi)?
Tek bir ekran oturumunda 1000 pencereyi kastediyorsanız, daha zarif bir çözüm komutu kullanarak ekrandan çıkmak olacaktır C-a \
(ctrl-a, ardından \).
screen -m sleep 100000
. Bu oldu ve 1000'den fazla seans seansı yapana kadar farketmedim.
Aşağıdaki komut tüm etkin olmayan ekranları sonlandırır:
perl -e 'while (map { kill 9, [split /\./]->[0] } grep { /Detached/ } split /\n/, qx{screen -ls}) { sleep 1 } exec qw(screen -wipe)'
for scr in $(screen -ls | awk '{print $1}'); do screen -S $scr -X kill; done
screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill