zoukankan      html  css  js  c++  java
  • linux 设置开机启动项两种方式

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务。

    在解问题之前先来看看Linux的启动流程

    Linux的启动流程

    Linux启动顺序

    主要顺序就是: 
    1. 加载内核 
    2. 启动初始化进程 
    3. 确定运行级别 
    4. 加载开机启动程序 
    5. 用户登录

    启动流程的具体细节可以看看Linux 的启动流程 

    第4步加载启动程序其实是两步:

    1. init进程逐一加载开机启动程序,其实就是运行指定目录里的启动脚本。
    2. 在运行完指定目录里面的程序后init进程还会去执行/etc/rc.local 这个脚本。

    ps:“指定目录”是指在第3步中设置的运行级别对应的目录。

    要完成我们的需求,我们使用第4步中的任意一种方式都可以。

    下面分别就是这两种方式的具体实现:

    1.chkconfig

    以supervisord服务脚本为例:

    #!/bin/sh
    ##
    ## /etc/rc.d/init.d/supervisord
    ##
    #supervisor is a client/server system that
    # allows its users to monitor and control a
    # number of processes on UNIX-like operating
    # systems.
    #
    # chkconfig: - 64 36
    # description: Supervisor Server
    # processname: supervisord
    
    # Source init functions
    . /etc/rc.d/init.d/functions
    
    prog="supervisord"
    prefix="/usr/"
    exec_prefix="${prefix}"
    PIDFILE="/var/run/supervisord.pid"
    CONFIG="/etc/supervisord.conf"
    prog_bin="${exec_prefix}bin/supervisord -c $CONFIG "
    
    function log_success_msg() {
            echo "$@" "[ OK ]"
    }
    
    function log_failure_msg() {
            echo "$@" "[ OK ]"
    }
    
    start()
    {
           #echo -n $"Starting $prog: "
           #daemon $prog_bin --pidfile $PIDFILE
           #[ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog failed"
           #echo
            if [ ! -r $CONFIG ]; then
                    log_failure_msg "config file doesn't exist (or you don't have permission to view)"
                    exit 4
            fi
    
            if [ -e $PIDFILE ]; then
                    PID="$(pgrep -f $PIDFILE)"
                    if test -n "$PID" && kill -0 "$PID" &>/dev/null; then
                            # If the status is SUCCESS then don't need to start again.
                            log_failure_msg "$NAME process is running"
                            exit 0
                    fi
            fi
    
            log_success_msg "Starting the process" "$prog"
            daemon $prog_bin --pidfile $PIDFILE
            log_success_msg "$prog process was started"
    
    }
    stop()
    {
           echo -n $"Shutting down $prog: "
           [ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"
           echo
    }
    
    case "$1" in
    
     start)
       start
     ;;
    
     stop)
       stop
     ;;
    
     status)
           status $prog
     ;;
    
     restart)
       stop
       start
     ;;
    
     *)
       echo "Usage: $0 {start|stop|restart|status}"
     ;;
    
    esac
    

      第1步:把上面的脚本放在/etc/init.d/文件夹下。

    ln -s ./supervisord  /etc/init.d/supervisord
    

      第2步:将启动脚本权限改为可执行。

    chmod a+x /etc/init.d/supervisord
    

      第3步:添加启动项。

    chkconfig --add supervisord
    chkconfig supervisord on
    

      第4步:检查是否设置成功。

    chkconfig --list | grep supervisord
    supervisord     0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭

    成功~

    2.修改/etc/rc.local脚本

    /etc/rc.local 脚本内容如下

    #!/bin/sh
    #
    # This script will be executed *after* all the other init scripts.
    # You can put your own initialization stuff in here if you don't
    # want to do the full Sys V style init stuff.
    
    #touch /var/lock/subsys/local
    echo "hello linux" >> /tmp/hello2.log
    
    influxd > /tmp/influxd.log 2>&1 &
    
    echo "hello linux" >> /tmp/hello3.log
    

      

  • 相关阅读:
    12、mybatis学习——mybatis懒加载的设置
    11、mybatis学习——自定义结果映射resultMap以及关联查询
    10、mybatis学习——sqlmapper配置返回list和map结果集
    9、mybatis学习——sqlmapper配置中#{}和${}的区别
    8、mybatis学习——sqlmapper配置文件参数处理(单个参数,多个参数,命名参数)
    7、mybatis学习——mybatis基础增删改&&mybatis获取自增主键
    6、mybatis学习——mapper映射配置
    5、mybatis学习——mybatis多数据库厂商支持
    [20180927]ora-01426.txt
    [20180928]ora-01426(补充).txt
  • 原文地址:https://www.cnblogs.com/ouruola863/p/8573374.html
Copyright © 2011-2022 走看看