CentOS - lệnh killall (để giết tất cả các quy trình có tên khớp với một mẫu nhất định)


18

Gần đây tôi đã bắt đầu sử dụng CentOS. Tôi đã đi thử sử dụng killalltiện ích nhưng thấy nó bị thiếu, với tôi nhận được một command not foundtin nhắn khi cố gắng sử dụng nó. Làm cách nào tôi có thể có được chức năng này trên hệ thống của mình để tôi có thể giết tất cả các quy trình có tên khớp với một mẫu?

Câu trả lời:


24

Các pkilltiện ích là một thay thế tốt hơn nhiều để killall. killallkhông khả dụng vì hành vi của lệnh rất khác nhau giữa các hệ điều hành. pkilllà di động và hành xử giống nhau ở khắp mọi nơi. Nó cũng linh hoạt hơn rất nhiều vì nó cung cấp rất nhiều cách khác nhau để khớp các quy trình. Nó cũng chia sẻ hành vi và đối số tương tự như pgreptiện ích , cho phép bạn xem các quy trình nào sẽ được khớp và báo hiệu mà không thực sự báo hiệu chúng.

Cách sử dụng: pkill foo(sẽ giống như killall foo)


2
Tôi nghĩ rằng câu trả lời này sẽ tốt hơn nếu nó chỉ ra cách chính xác người ta có thể sử dụng nó để thay thế killall.
exebook

Không phải tất cả các triển khai pgrephỗ trợ -qtùy chọn cho việc im lặng mặc dù.
Kusalananda

cũng sẽ tốt hơn nếu nó mô tả gói nào là một phần của
Xalious

21

PSmisc chứa killalltiện ích, cùng với một vài công cụ nhỏ, hữu ích khác. Nó có thể được thêm vào đơn giản với

yum install psmisc

2

Ngoài giải pháp của Patrick, chức năng của lệnh killall có thể được nhân rộng bằng cách sau:

pkill -15 [process name]

Ví dụ, để tiêu diệt tất cả các tiến trình memcached đang chạy, người ta sẽ viết như sau:

pkill -15 memcached

'-15' là biểu diễn số của tín hiệu POSIX SIGTERM. Để có danh sách tất cả các tín hiệu POSIX có thể được phát trong một quy trình, hãy sử dụng lệnh sau:

kill -l

Điều này sẽ trả về bảng sau:

1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL      10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

Thông tin thêm về những gì từng tín hiệu có thể được tìm thấy ở đây .


Lưu ý rằng killallgửi TERMtín hiệu theo mặc định, không KILL.
Kusalananda


1
Điểm tốt. Đã chỉnh sửa.
Daniel Kay

Tại sao bạn chỉnh sửa chỉ để xóa 'Hy vọng điều này sẽ giúp!' từ cuối, @Rui F Ribeiro? Có quy tắc cộng đồng chống lại cố gắng để được lịch sự?
Daniel Kay

0

Tôi sẽ tưởng tượng thay thế systemd là systemctl halt(viết tắt của systemctl isolate halt.target)?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.