请注意,这是一个自由BSD问题而不是 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
?
答案1
你正在寻找的东西叫做导师。我不认为 FreeBSD 附带了一个开箱即用的软件。但在港口也有一些。至少我明白了;
- 监督者可以作为一个名为的端口使用
py-supervisor
(该端口有多种风格,可以使用pkg install py37-supervisor
或与您的 Python 版本匹配的任何版本进行安装)。 - 守护进程工具可以作为港口。
- 莫尼特可以作为港口。
- FSCD可以作为一个名为的端口使用
fsc
。
我建议监督。安装该包并将节添加到/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
.
答案2
daemon(1)
您可以使用该标志来重新启动-r
。简单得多,恕我直言。顺便说一句,我维护 memcached 端口,所以我也许可以帮助解决 memcached 崩溃问题,如果您愿意,请告诉我详细信息。