Frpc 或 Frps 在运行过程中有时候会因一些异常情况突然停止,这时搭建的服务就变的不可用,其实只要使用 FreeBSD 自带的 daemon 工具,即可做到当工作进程异常中止时自动重启工作进程,又可直接使用 service 命令进行管理。
FreeBSD手册中的信息有相关说明,daemon 支持 -r 来开启重启进程机制,-R 则设定多少秒后重启,默认是 1 秒。
通过 -p 指定工作进程的 pid 文件来告诉 rc.subr 具体的工作进程是哪个,-P 则是 daemon 本身的 pid。
#!/bin/sh # PROVIDE: frps # REQUIRE: LOGIN # KEYWORD: shutdown . /etc/rc.subr name="frps" rcvar=frps_enable load_rc_config $name : ${frps_enable="NO"} : ${frps_user="nobody"} : ${frps_flags=""} daemon_pidfile="var/run/frps_daemon.pid" pidfile="/var/run/frps.pid" command="/usr/local/opt/frp_0.21.0_freebsd_amd64/frps" start_cmd="/usr/sbin/daemon -r -R 5 -u $frps_user -P $daemon_pidfile -p $pidfile -t $name $command $frps_flags" start_postcmd="${name}_poststart" stop_cmd="${name}_stop" frps_poststart() { echo "${name}_daemon running pid `cat ${daemon_pidfile}`." echo "${name} running pid `cat ${pidfile}`." } frps_stop() { if [ -f "$daemon_pidfile" ]; then pid=`cat $daemon_pidfile` echo "Stopping pid ${pid}." kill $pid else echo "${name} not running?" fi } run_rc_command "$1"
将以上脚本保存在 /usr/local/etc/rc.d/frps 文件中,给予 +x 权限,在 /etc/rc.conf 中添加 frps_enable="YES" 与 frps_flags 指定 frps 的运行参数即可做到开机自动启动 frps。
使用 service frps start|status|stop 可控制与检查 frps 的运行。
frpc 的话参考相应处进行修改即可。
FreeBSD daemon 命令的手册:https://www.freebsd.org/cgi/man.cgi?query=daemon
FreeBSD rc.d 脚本手册:https://www.freebsd.org/doc/zh_CN/articles/rc-scripting/article.html
评论 共有 0 条评论
暂无评论,快发表你的评论吧。