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?
#!/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.
Bagus. Ini bekerja dengan ksh juga, dan saya akan mengubah "echo" menjadi "logger" perintah untuk memasukkan pesan ke log sistem.
Mei
Jawaban yang sempurna, bro.
Arunjith RS
4
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.
+1, Pastikan Anda juga membahas situasi di mana ia sengaja dibunuh juga.
Maximus Minimus
Titik yang baik, meskipun dalam kasus saya proses hanya menghilang
buntal
3
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: Anda salah besar. Jawaban panjang: jika distro Linux tidak memiliki inittab, ia akan memiliki /etc/event.d/ - salah satu mekanisme akan memulai kembali proses ketika mati.
Jawaban:
Jika diluncurkan dari init, Anda dapat membuatnya respawn oleh init. Atur aksi untuk proses 'respawn' untuk level run yang Anda inginkan prosesnya.
sumber
Saya telah menjawab pertanyaan serupa sebelumnya .
Dalam kasus Anda:
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.sumber
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.
sumber
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:
sumber
Mengapa bukan skrip bash yang sederhana?
Ganti xeyes dengan program pilihan Anda.
sumber
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.sumber