Solusi 1:
Saya akan mencari daemontools (http://cr.yp.to/daemontools.html).
Supervise dibuat untuk tujuan ini -- untuk memulai proses dan mengawasinya, memulai ulang segera jika proses dihentikan.
Anda masih dapat menggunakan monit jika Anda perlu melakukan sesuatu yang lebih rumit daripada pemeriksaan sederhana "apakah masih berjalan", dan jika proses perlu dimulai ulang, lakukan melalui pengawasan.
Solusi 2:
Anda juga bisa menggunakan /etc/inittab untuk memulai kembali proses mati menggunakan respawn tindakan.
Lihat bagian inittab di http://aplawrence.com/Unixart/startup.html
Solusi 3:
Anda dapat menggunakan skrip event handler dengan Nagios jika Anda memilikinya untuk memulai kembali layanan.
Jika pernis memerlukan izin root untuk memulai (skrip init.d biasanya melakukannya) ubah "/etc/init.d/varnish start" menjadi "sudo /etc/init.d/varnish start". Tapi itu mungkin tidak akan cukup karena Anda mungkin tidak ingin memberikan monit pengguna apa pun yang berjalan sebagai total sudo nopasswd hak istimewa untuk semua perintah dan memberikan sudo ke skrip shell pada dasarnya sama buruknya. Jadi, Anda perlu mencari tahu perintah mana dalam skrip init yang memerlukan sudo, berikan perintah tersebut hak istimewa sudo di file /etc/sudoers ke pengguna monit, dan akhirnya edit skrip init yang sesuai. Atau mungkin bukannya semua pernis ini bisa dijalankan sebagai pengguna non-root?
Akhirnya, saya yakin Anda tahu ini, tetapi saya akan tetap mengatakannya. Anda jelas berusaha keras untuk ini, saya harap Anda berusaha keras untuk mencari tahu mengapa pernis mogok dan benar-benar memperbaikinya (atau mendesak pengembang untuk mencari tahu alasannya) :-)
Memperbarui:
Ini mungkin tidak bersih, tetapi cara mudah untuk menyelesaikannya sebagai root mungkin dengan menyiapkan skrip yang memeriksa apakah prosesnya baik-baik saja, dan jika tidak memulainya. Kemudian jalankan skrip itu setiap beberapa menit sebagai tugas cron.
Solusi 4:
Metode hebat lainnya yang diambil dari StackOverflow:
until myserver; do
echo "Server 'myserver' crashed with exit code $?. Respawning.." >&2
sleep 1
done
Ini dapat ditambahkan ke crontab:
crontab -e
Kemudian tambahkan aturan untuk memulai skrip monitor Anda:
@reboot /usr/local/bin/myservermonitor
Atau ditambahkan sebagai skrip di /etc/init.d
Lihat jawaban StackOverflow untuk penjelasan mendetail tentang mengapa ini merupakan pendekatan yang bagus.