去年夏天的时候有在用一些灵车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=truecommand_background="yes"

参考