Freebsd

保持一個守護程序在 FreeBSD 上執行

  • September 9, 2020

請注意這是一個FreeBSD問題,而不是 Linux 問題。請不要回答它將如何在 Linux 上systemd或其中任何一個上完成。

我有一個memcached崩潰的情況。這不是可重複的,我最終會弄清楚的。與此同時,我需要確保它memcached正在執行。如果不是,我需要重新啟動它。它是通過安裝pkg和啟動的/usr/local/etc/rc.d/memcached。有幾個選擇。

  1. 我可以編寫一個看門狗腳本並每隔 10 分鐘或通過cron. 有點醜,但會工作。這裡主要是我需要去寫那個腳本。呼叫service memcached status,評估結果,也許呼叫service memcached start。我知道怎麼寫,但它看起來很笨拙。我寧願只使用已經存在的機制。
  2. 我可以寫一個do ... until循環腳本。然後我可以修改/usr/local/etc/rc.d/memcached. 但我想保持包原始安裝的文件。我不想在每次升級軟體包時都使我的更改永久化。
  3. 我將一個腳本放入/usr/local/etc/periodic.d/hourly並由periodic(8).

是否有一些簡單的、FreeBSD 原生的機制,我沒有想到讓程序保持執行?還是我只是想多了,我應該去寫我的 8 行腳本並開始呼叫它cron

您正在尋找的東西稱為supervisor。我不認為 FreeBSD 提供了一個開箱即用的功能。但有一些在港口。我至少看到了;

我建議supervisord。安裝包並添加一個節/usr/local/etc/supervisord.conf

[program:memcached]
command=/usr/local/etc/rc.d/memcached

要在引導時執行 supervisord,請編輯/etc/rc.conf/etc/rc.conf.local使該行

supervisord_enable="YES"

無論您選擇哪個主管,請確保禁用memcached.

引用自:https://unix.stackexchange.com/questions/606702