GNU/Linux >> Belajar Linux >  >> Linux

Perintah Killall di Linux dengan Contoh

Baris perintah Linux menawarkan berbagai perintah untuk mematikan proses. Misalnya, perintah 'kill' dapat digunakan untuk mematikan proses dengan melewatkan PID-nya sebagai argumen, perintah 'pkill' mengambil pola sebagai input dan semua proses yang sedang berjalan akan dimatikan. Tetapi ada perintah 'killall', yang secara default sama persis dengan nama argumen, dan menghentikan proses pencocokan.

Pada artikel ini, kita akan membahas perintah ini dengan beberapa contoh praktis. Perintah killall dapat digunakan untuk mengirim sinyal ke proses tertentu dengan menggunakan namanya. Artinya jika Anda menjalankan lima versi dari program yang sama, perintah killall akan mematikan kelimanya.

Sinyal dapat ditentukan sebagai argumen untuk perintah ini atau SIGTERM dikirim secara default. Suatu proses dapat menghasilkan proses anak yang independen dari proses induk, itu berarti bahwa setiap sub-proses mengidentifikasi dengan pid-nya. Dengan perintah kill, kita menggunakan pid untuk memilih sub-proses yang akan dibunuh tetapi dengan perintah killall, dengan menunjukkan nama, karena semua sub-proses dan induk proses memiliki nama yang sama, semua proses akan dimatikan.

Mari kita bahas penggunaan perintah killall melalui beberapa contoh praktis.

1) Buat daftar semua sinyal yang didukung

Perintah kill mendukung beberapa sinyal yang dapat dicantumkan dengan -l pilihan. killall mengirimkan sinyal ke proses. Anda dapat menggunakan -s opsi (diikuti dengan nama sinyal) untuk mengirim sinyal tertentu ke suatu proses.

$ killall -l
 HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
 STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
 UNUSED

Secara default SIGTERM/TERM (15) dikirim ke proses, jika tidak sinyal diberikan ke perintah killall. Sinyal di atas berguna untuk digunakan baik oleh pengguna maupun sysadmin. Jadi killall mendukung semua sinyal ini.

2) Matikan proses tertentu

Untuk mematikan suatu proses, kita perlu mengidentifikasinya untuk memeriksa apakah itu berjalan. Kita dapat mematikan proses tertentu dengan namanya. Misalkan ada dua proses yang memiliki karakter awal yang sama :

$ ps -aef | grep "test"
 himanshu 3969 2811 0 14:14 pts/0 00:00:00 ./test
 himanshu 3970 2811 0 14:14 pts/0 00:00:00 ./test_again

Sekarang, inilah cara Anda dapat menggunakan perintah killall untuk membunuh 'test_again' :

$ killall test_again
 [2]+ Terminated ./test_again

Seperti yang Anda lihat, perintah killall menghentikan proses 'test_again'. Ini juga dapat dikonfirmasi melalui perintah ps :

$ ps -aef | grep "test"
 himanshu 3969 2811 0 14:14 pts/0 00:00:00 ./test

Amati bahwa 'test_again' tidak ditampilkan di output karena dimatikan.

3) Matikan proses yang mengabaikan kasus

Perintah killall peka huruf besar-kecil secara default. Ini contohnya :

$ ps -aef | grep "test"
 himanshu 4177 3161 0 14:54 pts/3 00:00:00 ./test
 himanshu 4178 3161 0 14:54 pts/3 00:00:00 ./test_again
 himanshu 4180 3161 0 14:54 pts/3 00:00:00 grep --color=auto test

Anda dapat melihat bahwa semua proses kami dalam huruf kecil. mari kita coba mematikan proses "./test" tetapi kita memasukkan nama dalam huruf kapital

$ killall TEST
 TEST: no process found

Jadi Anda dapat melihat bahwa perintah killall tidak dapat menemukan proses bernama TEST, sementara proses bernama 'test' sudah berjalan. Untuk memastikan bahwa perintah killall mengabaikan kasus, gunakan -I pilihan. Ini contohnya :

$ killall -I TEST
 [1]- Terminated ./test

Perhatikan bahwa sekarang berhasil menghentikan proses 'pengujian'.

4) Matikan proses dengan konfirmasi

Perintah killall dapat digunakan untuk membunuh lebih dari proses.

$ killall test test_again
 [2]- Terminated ./test_again
 [3]+ Terminated ./test

Tapi, bisa saja terjadi kesalahan saat memasukkan nama proses dengan menunjukkan nama lain. Ini bisa menjadi masalah serius jika proses yang ditunjukkan adalah proses kritis untuk sistem. Jadi disarankan untuk menggunakan killall untuk menghentikan proses secara interaktif dengan meminta konfirmasi. Untuk melakukannya, Anda dapat menggunakan -i pilihan.

$ killall -i test test_again
 Kill test(4201) ? (y/N) y
 Kill test_again(4202) ? (y/N) y
 [1]- Terminated ./test
 [2]+ Terminated ./test_again

Jadi Anda dapat melihat bahwa dengan cara ini pengguna dapat mengontrol penghentian proses menggunakan perintah killall.

5) Matikan proses secara diam-diam

Terkadang ketika killall tidak dapat menemukan proses yang ditentukan, ia mengeluh tentang hal yang sama di output.

Ini contohnya:

$ killall TEST
 TEST: no process found

Tetapi, jika Anda ingin killall melakukan pekerjaannya dengan tenang, Anda dapat menggunakan -q pilihan:

$ killall -q TEST
$

Jadi Anda dapat melihat bahwa ketika -q digunakan, outputnya ditekan.

6) Hasil aneh dari perintah killall

Halaman manual dari perintah killall mengatakan bahwa secara default, ini cocok dengan nama lengkap hanya jika panjangnya kurang dari atau sama dengan 15 karakter. Jadi, jika nama perintah lebih panjang dari 15 karakter, nama lengkapnya mungkin tidak tersedia (yaitu diganti). Dalam hal ini, bunuh semua akan membunuh semua yang cocok dalam 15 karakter pertama.

Misalnya, ada dua proses berikut dengan nama panjang :

$ ps -aef | grep "test"
 himanshu 4021 3161 0 14:27 pts/3 00:00:00 ./test_abcdefghij
 himanshu 4035 3161 0 14:27 pts/3 00:00:00 ./test_abcdefgh

Proses pertama dalam output di atas memiliki tepat 15 karakter dalam nama. Mari kita coba untuk membunuhnya menggunakan perintah killall :

$ killall test_abcdefghij
 [1]- Terminated ./test_abcdefghij

Jadi Anda dapat melihat bahwa perintah killall berhasil menghentikan proses.

Sekarang, menurut halaman manual, jika kedua nama memiliki lebih dari 15 karakter yang cocok, killall akan mematikan proses di mana nama tersebut diikuti oleh -e opsi atau itu akan membunuh semua yang cocok dalam 15 karakter pertama. Ini contohnya :

$ ps -aef | grep "test"
 himanshu 4114 3161 0 14:40 pts/3 00:00:00 ./test_abcdefghijklmnopqrstuvwx
 himanshu 4141 3161 0 14:46 pts/3 00:00:00 ./test_abcdefghijklmnopqrstuvwxyz
 himanshu 4143 3161 0 14:46 pts/3 00:00:00 grep --color=auto test

Perhatikan bahwa kedua proses sekarang memiliki lebih dari 15 karakter yang cocok dalam namanya. Sekarang, ketika saya mencoba mematikan proses kedua menggunakan killall :

$ killall test_abcdefghijklmnopqrstuvwxyz
 [6]+ Terminated ./test_abcdefghijklmnopqrstuvwxyz

Itu hanya membunuh proses yang ditentukan dan bukan juga proses kedua

$ ps -aef | grep "test"
 himanshu 4114 3161 0 14:40 pts/3 00:00:00 ./test_abcdefghijklmnopqrstuvwx
 himanshu 4146 3161 0 14:47 pts/3 00:00:00 grep --color=auto test

Saya tidak yakin apakah ada sesuatu yang salah di pihak saya, atau itu adalah bug dalam perintah killall. Saya akan menghargai jika Anda menyampaikan pandangan Anda tentang ini di komentar.

BTW, berikut adalah detail perintah killall di sistem saya:

$ killall --version
killall (PSmisc) 22.20
Copyright (C) 1993-2012 Werner Almesberger and Craig Small

PSmisc comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it under
the terms of the GNU General Public License.
For more information about these matters, see the files named COPYING.

Kesimpulan

Dari Centos 7, ini mendorong untuk menjalankan pkill alih-alih killall sehingga secara default Anda mungkin mendapatkan kesalahan ''killall:command not found" saat Anda menjalankan perintah. Jika Anda masih menginginkannya, instal pkill dengan menambahkan paket psmisc (# yum install psmisc).

Killall sangat membantu karena kita dapat mematikan proses dengan namanya meskipun kita tidak dapat mengingat pidnya. Tidak memiliki beberapa opsi karena relatif mudah digunakan.

Baca Juga:

  • Cara Membunuh Proses dari Terminal Linux
  • fkill - Alat Interaktif untuk Membunuh Proses di Linux

Linux
  1. Perintah kepala Linux dengan Contoh

  2. Perintah JQ di Linux dengan Contoh

  3. contoh Perintah killall di Linux

  1. Perintah wc Linux dengan Contoh

  2. Perintah sortir Linux dengan Contoh

  3. Perintah Tee Linux dengan Contoh

  1. Perintah Echo di Linux (Dengan Contoh)

  2. Perintah man di Linux dengan Contoh

  3. Perintah AWK di Linux dengan Contoh