Saya tidak sengaja membuat lebih dari 1000 layar. Bagaimana saya membunuh mereka semua dengan satu perintah? (Atau beberapa)
screen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
Saya tidak sengaja membuat lebih dari 1000 layar. Bagaimana saya membunuh mereka semua dengan satu perintah? (Atau beberapa)
screen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
Jawaban:
Anda dapat gunakan :
pkill screen
Atau
killall screen
Dalam OSX proses ini disebut LAYAR dalam semua huruf besar. Jadi, gunakan:
pkill SCREEN
Atau
killall SCREEN
Top
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 dengan awk sys {command}
kita dapat menyalin dan menempelkan satu perintah dan menjalankannya sys
, $1
mengacu pada argumen pertama yang diambil oleh awk. Akhirnya kami menjalankan perintah berhenti dengan screen -X quit
.
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 \).
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:
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