一个普通技术宅的点点滴滴

0%

学习总结第四天-linux下的开机启动脚本

当我们想要让某个程序开机在后台启动的时候,一种维护性较好的办法就是在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

便可以让系统配置好脚本,在合适的时候启动�动