Tôi vô tình tạo ra hơn 1000 màn hình. Làm thế nào để tôi giết tất cả chúng bằng một lệnh? (Hoặc một vài)
screen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
Tôi vô tình tạo ra hơn 1000 màn hình. Làm thế nào để tôi giết tất cả chúng bằng một lệnh? (Hoặc một vài)
screen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
Câu trả lời:
Bạn có thể dùng :
pkill screen
Hoặc là
killall screen
Trong OSX, quá trình này được gọi là SCREEN trong tất cả các mũ. Vì vậy, sử dụng:
pkill SCREEN
Hoặc là
killall SCREEN
Top
Gần đây đã bắt đầu làm quen với awk, tôi kết hợp nó và nó phục vụ mục đích của nó. Tôi đã đăng nó vì nó khá dễ hiểu.
screen -ls | grep '(Detached)' | awk 'sys {screen -S $1 -X quit}'
Nơi screen -ls
liệt kê tất cả các màn hình hiện tại.
grep 'pattern'
lọc ra tất cả các hàng phù hợp. Sau đó chúng ta có thể xử lý tất cả các màn hình tách rời và với awk sys {command}
chúng ta có thể sao chép và dán cùng một lệnh và thực thi nó sys
, $1
tham chiếu đến đối số đầu tiên được chọn bởi awk. Cuối cùng chúng ta thực hiện lệnh thoát với screen -X quit
.
screen -ls | grep '(Detached)' | awk '{print $1}' | xargs -I % -t screen -X -S % quit
làm việc tốt hơn cho tôi
Tôi hơi bối rối về cách bạn quản lý để tạo 1000 "màn hình". Có lẽ bạn có nghĩa là 1000 cửa sổ màn hình (1000 cửa sổ đầu cuối khác nhau trong một phiên màn hình)?
Nếu bạn có nghĩa là 1000 cửa sổ trong một phiên màn hình duy nhất, thì một giải pháp thanh lịch hơn sẽ là thoát khỏi màn hình bằng lệnh C-a \
(ctrl-a theo sau là \).
screen -m sleep 100000
. Điều này đã xảy ra và tôi đã không nhận thấy cho đến khi nó đã tạo ra hơn 1000 phiên màn hình.
Lệnh sau sẽ chấm dứt tất cả các màn hình không hoạt động:
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