Jalankan daemon di FreeBSD

Aug 28 2020

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.

  1. 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. Menelepon service memcached status, mengevaluasi hasilnya, mungkin menelepon service memcached start. Saya tahu bagaimana menulisnya, tapi sepertinya kikuk. Saya lebih suka menggunakan mekanisme yang sudah ada.
  2. 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.
  3. Saya memasukkan skrip /usr/local/etc/periodic.d/hourlydan membuatnya dipanggil oleh periodic(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

5 Gilles'SO-stopbeingevil' Aug 28 2020 at 04:46

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.

SteveWills Sep 10 2020 at 04:07

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.