当我们想要让某个程序开机在后台启动的时候,一种维护性较好的办法就是在linux下加入一个开机启动服务。
今天对于linux下的服务脚本的做了一些了解,环境为ubuntu 17.04
首先,系统上的每个服务的脚本都保存在/etc/init.c 下,这些文件都是一些sh脚本,可以直接执行。
下面是一个是一个init脚本:
#!/bin/sh
### BEGIN INIT INFO
# Provides: kcptun
# Required-Start: $network $syslog $local_fs $remote_fs $named
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: The start of kcptun
# Description: A script to run kcptun
### END INIT INFO
PATH=/usr/local/bin:/sbin:/usr/bin:/bin
case "$1" in
start)
#sth. to start service
;;
stop)
#sth. to stop service
;;
restart)
#sth. to restart service
;;
status)
#sth. to get service status
;;
*)
echo 'Usage: service myservice {start|status|stop|restart}'
echo ''
exit 1
esac
exit 0
首先是上面的注释部分,第一行是指明解析使用的解释器,然后便是INIT INFO,这里也是必不可少的部分,里面记录了脚本的一些相关信息,具体如下:
- Provides: 服务名称,这个应当和文件名相同
- Required-Start:表示在这个服务启动前需要启动的服务
- Required-Stop:表示在这个服务关闭前需要启动的服务
- Default-Start:表示这个脚本在指定的运行等级下会启动
- Default-Stop:表示这个脚本在指定的运行等级下会关闭
- Short-Description:简短描述
- Description:描述
然后声明PATH变量,方便我们调用各种脚本
接下来是对传入参数进行判断,这里的 $1 是传入的参数,可以在里面的不同参数下加入自己的代码
然后将这个文件放到/etc/init.d/下
在/etc/rc.d 下我们可以看到各个服务在不同运行级别下的启动关系,当然我们并不需要亲自去修改这些文件,系统已经给我们提供了工具来自动修改这些文件,在ubuntu下,这个工具是update-rc.d
我们可以运行
update-rc.d <yourservice> default
便可以让系统配置好脚本,在合适的时候启动�动