Saya akrab dengan kill
perintah, dan sebagian besar waktu kita hanya menggunakan kill -9 untuk mematikan suatu proses secara paksa, ada banyak sinyal lain yang dapat digunakan kill
. Tapi saya ingin tahu apa kasus penggunaan pkill
dan killall
, jika sudah ada perintah kill.
Apakah pkill
dan killall
menggunakan kill
perintah dalam implementasi mereka? Maksud saya mereka hanya pembungkus kill
atau mereka memiliki implementasi sendiri?
Saya juga ingin tahu bagaimana pgrep
perintah mendapatkan id proses dari nama proses.
Apakah semua perintah ini menggunakan panggilan sistem mendasar yang sama? Apakah ada perbedaan dari sudut pandang kinerja, mana yang lebih cepat?
linux
bash
shell-script
kill
Ijaz Ahmad Khan
sumber
sumber
kill -9
secara default? -15 (tolong hentikan) dan -1 (modem sudah ditutup, tolong JELAS tutup sendiri) jauh lebih sopan. Kedua. Waspadalah terhadap penggunaan killall pada kotak non-linux. Itu mungkin berperilaku berbeda. (Misalnya pada solaris itu membunuh semua. TIDAK difilter pada nama proses).Jawaban:
The
kill
perintah pembungkus yang sangat sederhana dengankill
system call , yang tahu hanya tentang proses ID (PID).pkill
dankillall
juga pembungkus untukkill
pemanggilan sistem , (sebenarnya, ke perpustakaan libc yang secara langsung memanggil pemanggilan sistem), tetapi dapat menentukan PID untuk Anda, berdasarkan pada hal-hal seperti, nama proses, pemilik proses, id sesi, dll.Bagaimana
pkill
dankillall
kerja dapat dilihat menggunakanltrace
ataustrace
pada mereka. Di Linux, keduanya membaca/proc
sistem file, dan untuk setiap pid (direktori) yang ditemukan, melintasi lintasan dengan cara mengidentifikasi proses dengan namanya atau atribut lainnya. Cara ini dilakukan secara teknis, kernel dan sistem spesifik. Secara umum, mereka membaca/proc/<PID>/stat
yang berisi nama perintah sebagai bidang ke-2. Untukpkill -f
danpgrep
memeriksa/cmdline
entri untuk setiap entri PID.pkill
danpgrep
gunakanreadproc
system call, sedangkankillall
tidak. Saya tidak bisa mengatakan jika ada perbedaan kinerja: Anda harus membandingkannya sendiri.sumber
kill and killall adalah alat yang menyediakan cara untuk membunuh suatu proses. Yang pertama dengan PID-nya, yang kedua dengan namanya. pgrep (daftar) dan pkill (kill secara default) adalah alat yang menyediakan cara untuk mengirim pesan ke suatu proses dengan namanya atau atribut lain, lihat: http://linux.die.net/man/1/pkill Untuk info lebih lanjut tentang sinyal: http://linux.die.net/man/7/signal
sumber
killall
digunakan untuk membunuh proses dengan namanya? dan menggunakan pgrep untuk tujuan ini? dankillall
juga membunuh semua proses anak ,? sinyal apa yangkillall
digunakan secara default?killall
akan membunuh semua proses yang Anda miliki hak untuk membunuh, sehingga jika Anda melakukan root, Anda secara efektif me-reboot server.killall chromium
akan membunuh proses kromium,pgrep chromium
akan memberi Anda daftar PID,pkill chromium
akan membunuh kromium. killall akan mengirim secara default sinyal SIGTERM (seperti pkill)