Freebsd
保持一個守護程序在 FreeBSD 上執行
請注意這是一個FreeBSD問題,而不是 Linux 問題。請不要回答它將如何在 Linux 上
systemd
或其中任何一個上完成。我有一個
memcached
崩潰的情況。這不是可重複的,我最終會弄清楚的。與此同時,我需要確保它memcached
正在執行。如果不是,我需要重新啟動它。它是通過安裝pkg
和啟動的/usr/local/etc/rc.d/memcached
。有幾個選擇。
- 我可以編寫一個看門狗腳本並每隔 10 分鐘或通過
cron
. 有點醜,但會工作。這裡主要是我需要去寫那個腳本。呼叫service memcached status
,評估結果,也許呼叫service memcached start
。我知道怎麼寫,但它看起來很笨拙。我寧願只使用已經存在的機制。- 我可以寫一個
do ... until
循環腳本。然後我可以修改/usr/local/etc/rc.d/memcached
. 但我想保持包原始安裝的文件。我不想在每次升級軟體包時都使我的更改永久化。- 我將一個腳本放入
/usr/local/etc/periodic.d/hourly
並由periodic(8)
.是否有一些簡單的、FreeBSD 原生的機制,我沒有想到讓程序保持執行?還是我只是想多了,我應該去寫我的 8 行腳本並開始呼叫它
cron
?
您正在尋找的東西稱為supervisor。我不認為 FreeBSD 提供了一個開箱即用的功能。但有一些在港口。我至少看到了;
- supervisord可作為一個名為的埠使用
py-supervisor
(該埠有多種風格,安裝pkg install py37-supervisor
或與您的 Python 版本匹配)。- daemontools可作為埠使用。
- Monit可用作埠。
- FSCD可用作名為
fsc
.我建議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
.