美文网首页
linux中/etc/init.d设置开机启动

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

作者: 刘小白DOER | 来源:发表于2020-10-11 23:23 被阅读0次

        笔者最近要把写的脚本程序设置为开机启动,而且要把这个脚本做成服务放置在/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)。

    相关文章

      网友评论

          本文标题:linux中/etc/init.d设置开机启动

          本文链接:https://www.haomeiwen.com/subject/gypypktx.html