Bagaimana cara membunuh proses dengan satu perintah?

18

Saya ingin membunuh proses, setelah menemukan id dalam satu langkah.

Saat ini saya menggunakan dua perintah ini:

pidof <name>
kill <#number_which_is_result_of_command>

Bagaimana saya bisa menulis satu perintah untuk melakukan ini?

Cuil Yahoo
sumber
Shell apa? bash? tcsh? ...?
Levon
2
Anda dapat mencari substitusi perintah dalam dokumentasi shell Anda.
deviantkarot
2
Saya membunuh semuanya secara visual dengan menggunakan: xkill. Cukup ketik xkill di Terminal, pindahkan kursor ke aplikasi yang menyinggung dan tekan tombol. Pergi
1
@arochester Itu berfungsi, tetapi terbatas pada lingkungan GUI, killberagam perintah akan bekerja dari konsol (plus bisa diotomatiskan dalam skrip dll). Masih bagus untuk membuat orang sadar akan xkillopsi tersebut.
Levon
Jika salah satu jawaban di bawah menyelesaikan masalah Anda, harap pertimbangkan untuk menerimanya dengan mengklik tanda centang di sebelah jawaban. Ini akan menghargai kedua belah pihak dengan beberapa poin rep dan menandai masalah ini telah diselesaikan
Levon

Jawaban:

18

Anda juga dapat membunuh proses dengan nama:

Contoh:

pkill vim  # kill all processes containing vim in the process name
fromnaboo
sumber
@Levon Anda yakin? Petunjuk: Apakah akan berhasil jika Anda mengubah pkillke kill?
Mikel
Itu tidak akan berhasil, Levon. kill -9 membunuh proses dengan PID-nya dan pkill -9 membunuh proses dengan namanya.
fromnaboo
6
Tanpa -oatau -n, pkilljuga membunuh semua proses pencocokan, bukan hanya satu.
Mikel
3
-1 untuk menyarankan untuk menggunakan SIGKILL (-9), yang merupakan ekologi proses yang buruk. Dengan SIGKILL, data dalam proses tidak memerah, menciptakan kemungkinan korupsi data.
Arcege
6
Menyarankan killalladalah SARAN SANGAT BURUK. Itu melakukan hal yang sangat berbeda tergantung pada Unix / Linux yang Anda gunakan.
MikeyB
13

Untuk menjawab pertanyaan spesifik Anda dengan set perintah Anda, gunakan:

kill `pidof <name>`

Karena pidof <name>memberi Anda PID dari proses yang Anda coba bunuh, Anda dapat menggunakannya dengan sakelar baris perintah seperti -9dll juga.

Diuji dengan bashdan tcsh.

Levon
sumber
9
BTW, kill $(pidof <name>)lebih kompatibel (POSIX) dan dapat digunakan di dalam blok substitusi perintah lain .
Rudolf Adamkovic
@RudolfAdamkovic Saya setuju, itu adalah opsi yang lebih baik, pasti dalam skrip. Namun untuk perintah yang diketik cepat saya menemukan menggunakan backticks lebih mudah .. ditambah itu bekerja dengan kedua shell umum (bash dan tcsh) .. Saya tidak bisa mendapatkan $versi untuk bekerja dengan tcsh.
Levon
Baru saja mencobanya tcshdan Anda benar. Tidak tahu itu. Terima kasih untuk info!
Rudolf Adamkovic
7

Seharusnya komentar tentang Levon, tetapi saya tidak memiliki perwakilan di sini untuk melakukannya:

Mempertajam diskusi dalam jawaban yang diterima dari pertanyaan ini: /server/397762/how-to-make-folders-00-99-with-a-single-command-in-ubuntu

Saya akan mengatakan itu bisa lebih baik (atau setidaknya berguna / lebih jelas untuk pencari nanti) untuk dijalankan

kill $(pidof <name>)

Referensi lebih lanjut tentang $ () vs. ``: http://mywiki.wooledge.org/BashFAQ/082

Ghillie Dhu
sumber
+1 untuk menyertakan tautan bawah khususnya. Saya menerima komentar serupa dari @RudolfAdamkovic, lihat balasan saya kepadanya. Apakah Anda tahu versi ini yang berfungsi dengan tcsh? (Saya masih menemukan backticks lebih mudah untuk mengetik pada perintah cepat di shell :)
Levon
Saya hanya bekerja dengan bash (di Linux) & ksh (di HP-UX); belum melewati jalur dengan tcsh, maaf.
Ghillie Dhu
1

Anda juga dapat menggunakan killallperintah untuk mematikan proses tertentu.

killall vim
Karthikeyan.RS
sumber