Setelah menggunakan sekadar kill <some_pid>
pada sistem Unix selama bertahun-tahun, saya belajar pkill
dari yang lebih muda Linux-savvy rekan kerja rekan 1 .
Saya segera menerima cara Linux, pgrep
-ing dan pkill
-ing melalui banyak hari dan malam, melalui perlambatan dan kondisi balapan. Ini semua baik dan bagus.
Tapi sekarang aku tidak melihat apa pun kecuali killall
. How-to sepertinya hanya menyebutkan killall
, dan saya tidak yakin apakah ini semacam pengembangan paralel, atau apakah killall
penerusnya pkill
, atau sesuatu yang lain.
Tampaknya berfungsi sebagai lebih bertarget pkill
, tapi saya yakin saya kehilangan sesuatu.
Dapatkah Ubuntu / Debian-savvy 2 orang menjelaskan kapan (atau mengapa) killall
harus digunakan, terutama jika itu harus digunakan dalam preferensi pkill
(ketika pkill
sering tampak lebih mudah, karena saya bisa lebih sembrono dengan pencocokan nama, setidaknya secara default).
Ketika berbicara tentang killall
, saya tidak memikirkan perintah yang pada beberapa sistem Unix (Solaris, AIX,?) Akan membunuh semua proses pengguna. Berikut adalah deskripsi dari versi itu, dari halaman manual untuk AIX IBM :
Perintah killall membatalkan semua proses yang Anda mulai, kecuali yang menghasilkan proses killall. Perintah ini menyediakan cara yang mudah untuk membatalkan semua proses yang dibuat oleh shell yang Anda kontrol. Ketika dimulai oleh pengguna root, perintah killall membatalkan semua proses yang dapat dibatalkan kecuali proses yang memulai itu. Jika beberapa Sinyal ditentukan, hanya yang terakhir yang efektif.
1 'kolega' adalah peningkatan gratis dari 'rekan kerja', jadi mungkin juga.
2 Awalnya saya pikir ini adalah Linux atau Debian, tetapi beberapa sumber mengatakan bahwa Linux killall
berasal dari Unix BSD.
sumber
killall
pada sistem Solaris (lama?), Tetapi berperilaku berbeda. Itu membunuh segalanya.killall is safer for users to blindly copy and paste
, kecuali jika Anda menggunakan mesin di mana killall benar-benar membunuh semua. Sangat disayangkan bahwa dua utilitas yang berbeda memiliki nama yang sama.Harap berhati-hati dengan "killall". Pada beberapa sistem (saya lupa yang mana), killall membunuh semua proses. Ini akan diam-diam mengabaikan argumen dan membuat sistem Anda berhenti total.
sumber
kill -9 -1
mungkin membunuh sistem Anda, dankillall -9 -1
mungkin juga. Tetapi tidak hanyakillall [program]
jika Anda mengaktifkan /etc/bash_completion,
killall <part_of_process_name>
tab setelah dan tekan - otomatis melengkapi nama proses dari daftar proses yang berjalansumber
pkill plug<tab>
mematikan plugin flash untuk firefox ketika saya tahu bahwa saya tidak memiliki apa pun yang ingin saya gunakan untuk sementara waktu tetapi masih ingin secara aktif menggunakan firefox. Ini adalah fungsi dari shell, bukan perbedaan antara killall dan pgrep / pkill.Jika Anda melihat opsi pada kedua program, Anda akan melihat bahwa keduanya melakukan hal yang sama, tetapi dengan cara yang berbeda.
pkill akan melakukan pencocokan pada berbagai atribut suatu proses (CMD, PID, PPID, UID ...) dan akan mengirimkan sinyal yang diberikan ke setiap proses yang cocok. (Untuk CMD, ekspresi reguler digunakan, untuk yang lain itu adalah string). pkill tidak interaktif, tetapi lebih baik untuk program batch.
killall akan melakukan pencocokan pada nama proses (comm) atau pengguna (user), bukan pada keseluruhan string perintah. Argumen digunakan sebagai string sederhana dan harus cocok dengan seluruh nilai 'comm' (ada juga opsi --regexp untuk mengubah ini). killall memiliki opsi --interactive dan --younger-than, yang tidak dimiliki pkill.
Ada juga killall5 dari SysV days dan porting ke varian UNIX lainnya (konon di bawah paket Ubuntu 'sysutils'). Ini berperilaku berbeda dengan cara mode lama. Ini sering digunakan secara internal ke skrip init untuk mematikan atau mengubah ke mode pengguna tunggal.
sumber
pkill
juga tidakkillall
boleh digunakan dalam skrip, hanya secara interaktif, dan dengan hati-hati.