Jalankan daemon di FreeBSD
Harap dicatat bahwa ini adalah pertanyaan FreeBSD dan bukan pertanyaan Linux. Tolong jangan menjawab dengan bagaimana itu akan dilakukan di Linux atau systemdyang lainnya.
Saya memiliki situasi di mana memcachedsedang crash. Ini tidak berulang dan saya akhirnya akan mengetahuinya. Sementara itu, saya perlu memastikannya memcachedberjalan. Jika tidak, saya perlu memulai ulang. Ini diinstal melalui pkgdan dimulai melalui /usr/local/etc/rc.d/memcached. Ada beberapa pilihan.
- Saya dapat menulis skrip pengawas dan memintanya setiap 10 menit atau melalui
cron. Agak jelek, tapi akan berhasil. Hal utama di sini adalah saya harus menulis skrip itu. Meneleponservice memcached status, mengevaluasi hasilnya, mungkin meneleponservice memcached start. Saya tahu bagaimana menulisnya, tapi sepertinya kikuk. Saya lebih suka menggunakan mekanisme yang sudah ada. - Saya bisa menulis
do ... untilskrip loop. Kemudian saya bisa memodifikasi/usr/local/etc/rc.d/memcached. Tetapi saya ingin menjaga file yang diinstal oleh paket tetap murni. Saya tidak ingin mengubah perubahan saya setiap kali saya mengupgrade paket. - Saya memasukkan skrip
/usr/local/etc/periodic.d/hourlydan membuatnya dipanggil olehperiodic(8).
Apakah ada beberapa mekanisme asli FreeBSD yang mudah yang tidak saya pikirkan untuk menjaga proses tetap berjalan? Atau apakah saya hanya terlalu memikirkannya dan saya harus menulis skrip 8 baris saya dan mulai memanggilnya cron?
Jawaban
Apa yang Anda cari disebut supervisor . Saya tidak berpikir FreeBSD hadir dengan satu di luar kotak. Tapi ada beberapa di pelabuhan. Saya melihat setidaknya;
- supervisord tersedia sebagai port bernama py-supervisor(port memiliki beberapa varian, instal dengan
pkg install py37-supervisoratau apa pun yang cocok dengan versi Python Anda). - daemontools tersedia sebagai port .
- Monit tersedia sebagai port .
- FSCD tersedia sebagai port yang disebut fsc.
Saya menyarankan supervisord. Instal paket dan tambahkan stanza ke /usr/local/etc/supervisord.conf:
[program:memcached]
command=/usr/local/etc/rc.d/memcached
Untuk menjalankan supervisord pada saat boot, edit /etc/rc.confatau /etc/rc.conf.localmiliki baris tersebut
supervisord_enable="YES"
Pengawas mana pun yang Anda pilih, pastikan untuk menonaktifkan mulai langsung memcached.
Anda bisa melakukan restart dengan daemon(1)menggunakan -rflag. Jauh lebih sederhana, IMHO. BTW, saya memelihara port memcache, jadi saya mungkin dapat membantu dengan masalah mogok memcache, beri tahu saya detailnya jika Anda mau.