如何在 FreeBsd 11 中崩溃或重启后自动重新启动进程?

如何在 FreeBsd 11 中崩溃或重启后自动重新启动进程?

惯用的方式是什么?我更喜欢最标准、最简单的方式,并且附加依赖项更少。类似于 Linux 的 systemd 的替代品。

答案1

可以通过添加以下选项来自动重启已安装的进程/etc/rc.conf

yourprocess_enable="YES"

Linux 用户的 FreeBSD 系统启动

但这是假设有一个启动脚本/usr/local/etc/rc.d/

FreeBSD 使用手册 - 启动服务

答案2

如果你的进程还没有 rc.d 脚本,你可以很容易地使用守护进程(8)命令。该命令将在后台运行一个子进程,使用命令行选项-r,您可以让它在子进程终止时重新启动该子进程:

$ daemon -r /some/path/to/command

在 FreeBSD 的更高版本中,您可以指定-R <delay in seconds>在重新启动该进程之前等待多长时间。

要在重启后启动该进程,请在crontab(5)文件如下:

@reboot daemon -r /some/path/to/command

要编辑 crontab 文件,请使用

$ crontab -e

答案3

<service>_enable=YES如上所述,/etc/rc.conf(或相关rc.conf.d文件)将在启动时启动一项服务。

对于崩溃时重新启动,规范的做法是守护进程工具

答案4

您可以每两分钟(例如)将脚本添加到 cron 中:

#!/bin/sh

process = 'my-secret-service' # process name

if ps ax | grep -v grep | grep $process
then
    echo "$process is alive."
else
    echo "$process is dead, but will be launched."
/usr/local/bin/my-secret-service #launch command

fi

相关内容