终于明白怎样写OpenRC服务脚本
去年夏天的时候有在用一些灵车nat vps,默认的镜像很旧而内存和磁盘都很小不方便升级,所以直接dd成Alpine来使用。Alpine的init系统和Gentoo一样默认为OpenRC,因为懒我直接用nohup来运行需要部署到vps上的服务,但是当程序出错退出或是宿主机重启时服务并不能自动恢复,如果不写init脚本就需要再次ssh到vps用nohup执行一遍。最近又在用Alpine,索性搞清楚了OpenRC脚本怎样写。
OpenRC使用的是一个非常传统的init目录/etc/init.d/
。
以crond的OpenRC脚本为例:
关键词 | 含义 |
---|---|
#!/sbin/openrc-run |
脚本固定的释伴行 |
name |
程序名称,其中$SVCNAME 为脚本的文件名 |
command |
执行程序的命令 |
pidfile |
程序pid文件路径,用于追踪运行状态 |
command_args |
执行程序的命令参数 |
depend() |
脚本的依赖项 |
行为 | 操作 |
---|---|
启动crond | rc-service crond start |
停止crond | rc-service crond stop |
获取crond运行状态 | rc-service crond status |
启用crond开机启动 | rc-update add crond |
禁用crond开机启动 | rc-update del crond |
若启动服务时程序卡在前台则需在脚本中加入command_background=true
或command_background="yes"
。
参考