runit 配置示例
runit
是一个 Unix 服务监控程序,能管理指定程序的启动停止等状态。
脚本示例
#!/bin/sh
GUNICORN=/usr/local/bin/gunicorn
ROOT=/path/to/project
PID=/var/run/gunicorn.pid
APP=main:application
if [ -f $PID ]; then rm $PID; fi
cd $ROOT
exec $GUNICORN -c $ROOT/gunicorn.conf.py --pid=$PID $APP
将上述脚本保存为 /etc/sv/[app_name]/run
并赋予执行权限 chmod u+x /etc/sv/[app_name]/run
。(将 [app_name] 替换为实际所需的服务名)
然后创建软连接 ln -s /etc/sv/[app_name] /etc/service/[app_name]
,这时,指定的程序应已自动运行了。
指定运行程序的用户
默认的 runit 模板由 root 用户身份执行,如果想让脚本以其他用户身份执行可使用 chpst
命令,例如:
#!/bin/sh
FRPC=/usr/bin/frpc
CONFIG=/etc/frp/frpc.ini
LOG=/var/log/frp.log
USER=pi
exec chpst -u $USER $FRPC -c $CONFIG -L $LOG
即在命令前添加
chpst -u USER
管理
可使用 sv
命令管理服务
服务状态
$ sudo sv status gunicorn
服务启动
$ sudo sv start gunicorn
服务停止
$ sudo sv stop gunicorn