Tüm ekranları nasıl öldürürüm?


74

Yanlışlıkla 1000'den fazla ekran oluşturdum. Hepsini tek bir komutla nasıl öldürebilirim? (Ya da birkaçı)


3
koş ->screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
sactiw

İyi fikir @sactiw. Adlandırılmış oturumlarım ile çalışacak şekilde değiştirdim ve komutları biraz tercih ettim, tercihlerim için komutları biraz değiştirdim, benim gibi sıkışıp kalmaları durumunda oturumları tamamen temizledim ve tekrar akıl sağlığı kontrolü için kullanıcı olarak screen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
listeledi

3
Kazayla nasıl 1000 ekran oluşturdunuz?
duhaime

Yanıtlar:


94

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

2
Bu durumda SIGKILL kullanılması tavsiye edilmez. SIGTERM çok daha iyi bir seçim olacaktır.
Marco

Merhaba, Rahul Patil. neden ekran listede Top
görünmüyor

Ya iznim yoksa? Tüm ekranlara manuel olarak girip ayrı ayrı çıkmam gerekir mi?
hipoglucido

13

Ekranlar ölmüşse, şunları kullanın:

screen -wipe

6
str=$(screen -ls)  

array=$(echo $str|tr "." "\n")  

for V in $array  
do  
if [ $V -gt 0  ]  
        then screen -S $V -X quit  
fi  
done 

5

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 -lsmevcut 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, $1awk tarafından alınan ilk argümanı ifade eder. Sonunda quit komutunu birlikte uygularız screen -X quit.


1
screen -ls | grep '(Detached)' | awk '{print $1}' | xargs -I % -t screen -X -S % quit benim için daha iyi çalıştı.
whereisalext

2

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 \).


1
Ekranda 1000x ekranı çalıştırmayı deneyin. Ne oluyor? 1000 ekran penceresi alıyorsunuz. Evet, doğru, akıllıca ve merhametle ekran 1000 ekran seansı oluşturmuyor. Öyleyse, OP zaten ekranı başlatmışsa, yanlışlıkla 1000 ekran penceresini başlatmak, 1000 ekran oturumunu başlatmaktan çok daha kolay olmalıdır.
Railgun2

Garip ama yanıtladığım yorum kayboldu. Neyse, yukarıdaki yorumların kayda geçmesine izin veriyorum.
Railgun 2

1
Aslında bu oldukça basit. Sadece sonsuz bir döngü yapın (kazara) ve buna benzer bir şey yerleştirin screen -m sleep 100000. Bu oldu ve 1000'den fazla seans seansı yapana kadar farketmedim.
BrainStone 11:13

0

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)'

0
for scr in $(screen -ls | awk '{print $1}'); do screen -S $scr -X kill; done
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.