CentOS - perintah killall (untuk membunuh semua proses dengan nama yang cocok dengan pola yang diberikan)

18

Saya baru-baru ini mulai menggunakan CentOS. Saya pergi untuk mencoba menggunakan killallutilitas tetapi ternyata hilang, dengan saya menerima command not foundpesan ketika mencoba menggunakannya. Bagaimana saya bisa mendapatkan fungsionalitas ini di sistem saya sehingga saya bisa, misalnya, membunuh semua proses yang namanya cocok dengan pola?

Michael Ohlrogge
sumber

Jawaban:

24

The pkillutilitas adalah alternatif yang lebih baik banyak untuk killall. killalltidak portabel karena perilaku perintah sangat berbeda di seluruh OS. pkillportabel dan berperilaku sama di mana-mana. Ini juga jauh lebih fleksibel karena menyediakan banyak cara berbeda untuk mencocokkan proses. Itu juga berbagi perilaku yang cocok dan argumen sebagai pgreputilitas , yang memungkinkan Anda untuk melihat proses apa yang akan dicocokkan dan diberi sinyal tanpa benar-benar menandakannya.

Penggunaan: pkill foo(yang akan sama dengan killall foo)

Patrick
sumber
2
Saya pikir jawaban ini akan lebih baik jika telah menunjukkan bagaimana tepatnya seseorang dapat menggunakannya untuk menggantikannya killall.
exebook
Tidak semua implementasi pgrepmendukung -qopsi untuk diam.
Kusalananda
juga akan lebih baik jika menggambarkan paket apa itu bagian dari
Xalorous
21

PSmisc berisi killallutilitas tersebut, bersama dengan beberapa alat kecil dan bermanfaat lainnya. Dapat ditambahkan hanya dengan

yum install psmisc
Michael Ohlrogge
sumber
2

Lebih jauh ke solusi Patrick, fungsi perintah killall dapat direplikasi dengan yang berikut:

pkill -15 [process name]

Misalnya, untuk membunuh semua proses memcached yang berjalan, orang akan menulis yang berikut ini:

pkill -15 memcached

'-15' adalah representasi numerik dari sinyal SIGTERM POSIX. Untuk mendapatkan daftar semua sinyal POSIX yang dapat diaktifkan pada suatu proses, gunakan perintah berikut:

kill -l

Ini akan mengembalikan tabel berikut:

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

Informasi lebih lanjut tentang apa yang dilakukan masing-masing sinyal dapat ditemukan di sini .

Daniel Kay
sumber
Catatan yang killallmengirim TERMsinyal secara default, bukan KILL.
Kusalananda
1
Poin bagus. Diedit.
Daniel Kay
Mengapa Anda mengedit hanya untuk menghapus 'Semoga ini bisa membantu!' dari akhir, @Rui F Ribeiro? Apakah ada aturan komunitas yang melarang untuk bersikap sopan?
Daniel Kay
0

Saya akan membayangkan alternatif systemd adalah systemctl halt(kependekan dari systemctl isolate halt.target)?

Xalorous
sumber