Saya tidak sengaja membuat lebih dari 1000 layar. Bagaimana saya membunuh mereka semua dengan satu perintah? (Atau beberapa)
linux
bash
gnu-screen
kill
BrainStone
sumber
sumber
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;
Jawaban:
Anda dapat gunakan :
Atau
Dalam OSX proses ini disebut LAYAR dalam semua huruf besar. Jadi, gunakan:
Atau
sumber
Top
Jika layar mati, gunakan:
sumber
sumber
Baru-baru ini mulai membiasakan diri dengan awk saya mengumpulkan ini dan itu melayani tujuannya. Saya mempostingnya karena cukup mudah dimengerti.
screen -ls | grep '(Detached)' | awk 'sys {screen -S $1 -X quit}'
Di mana
screen -ls
daftar semua layar saat ini.grep 'pattern'
memfilter semua baris yang cocok. Kita kemudian bisa mendapatkan pegangan untuk semua layar yang terpisah dan denganawk sys {command}
kita dapat menyalin dan menempelkan satu perintah dan menjalankannyasys
,$1
mengacu pada argumen pertama yang diambil oleh awk. Akhirnya kami menjalankan perintah berhenti denganscreen -X quit
.sumber
screen -ls | grep '(Detached)' | awk '{print $1}' | xargs -I % -t screen -X -S % quit
bekerja lebih baik untukku.Saya agak bingung bagaimana Anda berhasil membuat 1000 "layar". Mungkin maksud Anda 1000 jendela layar (1000 jendela terminal berbeda dalam satu sesi layar)?
Jika Anda bermaksud 1000 jendela dalam satu sesi layar tunggal, maka solusi yang lebih elegan adalah keluar dari layar menggunakan perintah
C-a \
(ctrl-a diikuti oleh \).sumber
screen -m sleep 100000
. Ini terjadi dan saya tidak menyadarinya sampai sudah membuat lebih dari 1000 sesi layar.Perintah berikut akan menghentikan semua layar tidak aktif:
sumber
sumber