linux中/etc/init.d设置开机启动

2020-10-11  本文已影响0人  刘小白DOER

    笔者最近要把写的脚本程序设置为开机启动,而且要把这个脚本做成服务放置在/etc/init.d目录下,和其他服务一样,比如mysql,可以允许命令service mysql start/stop/restart或者/etc/init.d mysql start/stop/restart来执行。用户在启用相应服务时, 就不用进行太复杂的设置。 当服务终止时, 操作系统也能根据脚本的定义, 自动回收相关资源。 用户还能把重要的服务设置成开机启动, 省去了手动开启的麻烦。/etc/init.d 是 /etc/rc.d/init.d 的软链接(soft link)。

    想到笔者以前做过树莓派来建立adsb接收基站,不妨把他的找出来看看,一个服务到底一个怎么写,有啥格式?

    dump服务,脚本把进程包装成了一个服务, 定义了它在启动、 重启和终止时的具体行为。

#!/bin/bash

### BEGIN INIT INFO

# Provides:            dump1090

# Required-Start:      $remote_fs

# Required-Stop:        $remote_fs

# Default-Start:        2 3 4 5

# Default-Stop:        0 1 6

# Short-Description:    dump1090 initscript

PROG="dump1090"

PROG_PATH="/root/dump1090"

PROG_ARGS=" --net --net-sbs-port 30003"

PIDFILE="/var/run/$PROG.pid"

DELAY=5

start() {

      if [ -e $PIDFILE ]; then

          echo "Error! $PROG is currently running!" 1>&2

          exit 1

      else

          cd $PROG_PATH

          ./$PROG $PROG_ARGS 2>&1 >/dev/null &

          echo "$PROG started, waiting $DELAY seconds..."

          touch $PIDFILE

      fi

}

stop() {

      if [ -e $PIDFILE ]; then

        echo "$PROG is running"

        killall $PROG

        rm -f $PIDFILE

        echo "$PROG stopped"

      else

          echo "Error! $PROG not started!" 1>&2

          exit 1

      fi

}

if [ "$(id -u)" != "0" ]; then

      echo "This script must be run as root" 1>&2

      exit 1

fi

case "$1" in

      start)

          start

          exit 0

      ;;

      stop)

          stop

          exit 0

      ;;

      reload|restart|force-reload)

          stop

          start

          exit 0

      ;;

      **)

          echo "Usage: $0 {start|stop|reload}" 1>&2

          exit 1

      ;;

esac

    case "$1"就是读取dump命令后的第一个参数的值,分别对应不同的执行函数来操作。本服务脚本有三个函数  start、stop、 reload|restart|force-reload,对应着上面定义的函数。

    服务放在这个脚本下,还需要关联服务,chkconfig --add dump  。在chkconfig工具服务列表中增加此服务,此服务会在/etc/rc.d/rcN.d中赋予K/S入口了。chkconfig --level 2345  dump  on,修改start运行级别设置为2345,。​chkconfig --level 16 dump off,修改stop运行级别为16。需要要注意的是,dump脚本需要设置X执行权限哦。 chkconfig -list可以显示所有运行级系统服务的运行状态信息(on或off)。

上一篇下一篇

猜你喜欢

热点阅读