Saya sedang mencari cara untuk memantau suatu proses, dan meluncurkan kembali yang dapat dieksekusi jika proses itu mati karena alasan apa pun. Apakah Linux memiliki alat bawaan yang dapat melakukan ini?
Saya sedang mencari cara untuk memantau suatu proses, dan meluncurkan kembali yang dapat dieksekusi jika proses itu mati karena alasan apa pun. Apakah Linux memiliki alat bawaan yang dapat melakukan ini?
Jawaban:
Jika diluncurkan dari init, Anda dapat membuatnya respawn oleh init. Atur aksi untuk proses 'respawn' untuk level run yang Anda inginkan prosesnya.
Saya telah menjawab pertanyaan serupa sebelumnya .
Dalam kasus Anda:
#!/bin/bash
while ! <<command>>
do
sleep 1
echo "Restarting program..."
done
Ganti <<command>>
dengan perintah yang ingin Anda jalankan. Proses tersebut harus selesai dengan kode keluar nol untuk memutus perulangan. Kalau tidak, itu dimulai kembali oleh skrip.
Apakah Anda hanya ingin memulai ulang jika mati? Masalahnya adalah ini tidak menangani situasi di mana ia membeku. Jadi hanya memeriksa proses tidak akan selalu membantu. Jadi jika ini adalah sesuatu seperti server web, Anda ingin skrip memeriksanya dari sudut pandang pengguna.
Jika Anda mengatur Pemantauan Nagios, Anda dapat menggunakan pengendali acara . Ini hanya skrip yang Anda tulis yang akan berjalan ketika layanan turun, jadi Anda bisa memiliki yang me-restart sesuatu seperti Apache jika situs web sedang down.
Bergantung pada distro, tetapi kami telah berhasil menggunakan "monit" untuk tugas ini. Cukup mudah. Anda dapat menulis cek sendiri, memantau PID proses, dll.
Contoh file monitrc:
check process sshd with pidfile /var/run/sshd.pid
start program "/etc/init.d/ssh start"
stop program "/etc/init.d/ssh stop"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
Jawaban Singkat : Tidak, Anda harus melakukannya sendiri.
Jawaban Panjang : Anda akan memerlukan proses induk untuk memulainya, dan kemudian terus memeriksa apakah masih hidup dan mulai ulang jika diperlukan.
Anda dapat menggunakan sesuatu seperti daemontools
untuk mengelolanya.