在 FreeBSD 上保持守护进程运行

Pac*_*ope 5 freebsd

请注意,这是一个FreeBSD问题,而不是 Linux 问题。请不要回答它将如何在 Linuxsystemd或任何其他平台上完成。

我遇到了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. 但我想保留由包 pristine 安装的文件。我不想在每次升级包时都保留我的更改。
  3. 我将脚本放入/usr/local/etc/periodic.d/hourly并由periodic(8).

是否有一些简单的、FreeBSD 原生的机制,我不考虑保持进程运行?或者我只是想多了,我应该去写我的 8 行脚本并开始调用它cron

Gil*_*il' 5

您正在寻找的称为supervisor。我不认为 FreeBSD 自带一个开箱即用的。但是在港口有一些。我至少看到了;

我建议supervisord。安装包并添加一个节到/usr/local/etc/supervisord.conf

[program:memcached]
command=/usr/local/etc/rc.d/memcached
Run Code Online (Sandbox Code Playgroud)

要在启动时运行 supervisord,请编辑/etc/rc.conf/etc/rc.conf.local拥有该行

supervisord_enable="YES"
Run Code Online (Sandbox Code Playgroud)

无论您选择哪个主管,请确保禁用直接启动memcached.