Làm thế nào để ngăn chặn một loạt các quá trình trên unix nhanh.
Tôi có thể sử dụng ps
/ top
, kill
.
Nếu số lượng tiến trình rất lớn, tôi sử dụng shell script. Có những cách khác, chỉ một hoặc hai lệnh unix có thể làm tốt điều đó?
Làm thế nào để ngăn chặn một loạt các quá trình trên unix nhanh.
Tôi có thể sử dụng ps
/ top
, kill
.
Nếu số lượng tiến trình rất lớn, tôi sử dụng shell script. Có những cách khác, chỉ một hoặc hai lệnh unix có thể làm tốt điều đó?
Câu trả lời:
Sự lựa chọn của tôi là pkill/pgrep
pgrep -a curl
để xem tất cả các quy trình sẽ bị giết bởi pkill
. Nếu mọi thứ có vẻ tốt, sử dụng pkill curl
.
Đây là một tập lệnh bash trực tuyến nhỏ mà tôi sử dụng:
ps auxwww | grep -v grep | grep -i $1 | awk '{print $2}' | xargs kill -9
Tôi giết tất cả các quá trình có tên chứa tham số đầu tiên (không phân biệt chữ hoa chữ thường). Bảng phân tích của từng phần là:
ps auxwww
in tất cả các quy trình với trường "lệnh" rất rộnggrep -v grep
Có để loại trừ chính nó khỏi vụ giết chócgrep -i $1
phù hợp với tất cả các dòng có chứa tham số đầu tiênawk '{print $2}'
lấy tất cả các id quá trìnhxargs kill -9
giết chết tất cả các quy trình được chọnfgrep
(không có regex)
pkill -9 -f $1
. Ngoài ra, không nên sử dụng tín hiệu 9 (KILL). Đó là cách cuối cùng để ngăn chặn một quá trình, không phải là một cách nên được sử dụng thường xuyên.
Psdoom thực sự là cách duy nhất để giết chết một quá trình. http://sheetoom.sourceforge.net/
Cách rất nhanh để tiêu diệt nhiều tiến trình (không cần phải viết tập lệnh)
USAGE: ./autokill.kl.sh <proc-name> => This will give you 5 seconds to change your mind and control-C out of the program.
USAGE: ./autokill.kl.sh <proc-name> now => This will immediately kill all processes matching the string/pattern you specified!!!
MODEL: ./autokill.kl.sh httpd
MODEL: ./autokill.kl.sh httpd now
MODEL: ./autokill.kl.sh httpd view => This will only show you the list of processes matching the pattern you specified.
Script có thể được tải trực tiếp tại đây .
Tôi thực sự thích sử dụng quảng cáo lệnh pgrep / pkill ở đây là một ví dụ:
[root@testrhel7 ~]# pgrep -l http
2967 httpd
2968 httpd
2969 httpd
2970 httpd
2971 httpd
2972 httpd
[root@testrhel7 ~]#
[root@testrhel7 ~]# pkill -e http
httpd killed (pid 2967)
httpd killed (pid 2968)
httpd killed (pid 2969)
httpd killed (pid 2970)
httpd killed (pid 2971)
httpd killed (pid 2972)
[root@testrhel7 ~]#
Tất nhiên Bạn có thể sử dụng một chu kỳ:
[root@testrhel7 ~]# ps -ef |grep http| grep -v grep
root 2989 1 0 16:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2990 2989 0 16:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2991 2989 0 16:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2992 2989 0 16:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2993 2989 0 16:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2994 2989 0 16:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
[root@testrhel7 ~]#
[root@testrhel7 ~]# for i in $(ps -ef | awk '/http/ {print $2}'); do kill -9 $i; done
Tôi hy vọng đó là hữu ích, hạnh phúc giết chết.