Tidak yakin apakah ini satu-satunya alasan, tapi inilah latihan saya:
Bergantung pada cara Anda menulis skrip shell untuk mematikan proses yang diinginkan, Anda bisa berakhir dengan membunuh PID kill sebelum membunuh target Anda, mari kita ambil mydaemon misalnya:
kill -9 `ps ax | grep mydaemon | awk '{ print $1 }'`
A) SIGPIPE-ing killIn PID Linux 32-bit biasanya bilangan bulat 15-bit, luapan sering terjadi, ada kemungkinan yang cukup besar bahwa PID grep atau awk akan muncul sebelum mydaemon's one . Dalam nomor PID 64-bit biasanya 22-bit, kemungkinannya 100x lebih kecil untuk terjadi, namun masih cukup dapat dibuat-buat.
Dengan membunuh salah satu pipa Anda, Anda akan menerima SIGPIPE dan biasanya ini berarti kematian juga, oleh karena itu bunuh akan dibunuh sebelum membunuh mydaemon membuat upaya membunuh gagal.
B) Membunuh PID lainnyaJuga, katakanlah Anda memiliki vi /etc/mydaemon/mydaemon.conf berjalan sama sekali, PID itu mungkin juga dimatikan, belum lagi proses pengguna lain karena kemungkinan besar Anda akan mengeluarkan perintah seperti root.
C) Ini adalah kunci sederhana seperti unix -> Tidak diperlukan kode/daemon tambahan. FilePid membuat cara yang cukup sederhana untuk membuat kunci yang dapat dikelola pengguna agar Anda tidak memunculkan daemon dua kali secara tidak sengaja.
File pid berisi id proses (angka) dari program tertentu. Misalnya, Apache HTTPD dapat menulis nomor proses utamanya ke file pid - yang merupakan file teks biasa, tidak lebih dari itu - dan kemudian menggunakan informasi yang ada di dalamnya untuk menghentikan dirinya sendiri. Anda juga dapat menggunakan informasi itu untuk mematikan proses itu sendiri, menggunakan cat filename.pid | xargs kill