基础知识

chkconfig是管理系统服务(service)的命令行工具。所谓系统服务(service),就是随系统启动而启动,随系统关闭而关闭的程序。
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
chkconfig提供5个功能:	
  1. 设置service启动信息
//on、off、reset用于改变service的启动信息。 
//on表示开启,off表示关闭,reset表示重置。 
//默认情况下,on和off开关只对运行级2,3,4,5有效,reset可以对所有运行级有效。
chkconfig name on/off/reset
  1. 设置service运行级别
//指定运行级为2,3,4,5 
//等级0表示:表示关机 
//等级1表示:单用户模式 
//等级2表示:无网络连接的多用户命令行模式 
//等级3表示:有网络连接的多用户命令行模式 
//等级4表示:不可用 
//等级5表示:带图形界面的多用户模式 
//等级6表示:重新启动
chkconfig --level 2345 name on
  1. 添加service
chkconfig --add name
  1. 移除service
chkconfig --del name
  1. 列出service的启动信息
chkconfig --list [name]

设置mysql开启自启动

  1. 将mysql安装目录下/support目录下的mysql.server文件复制到/etc/init.d/目录下,并改名为mysqld
cp /software/mysql/mysql-5.7.18-linux-glibc2.5-x86_64/support-files/mysql.server /etc/init.d/mysqld
  1. 设置mysqld文件的执行权限
chmod a+x /etc/init.d/mysqld
  1. 此时,我们可以通过该文件启动和停止mysql服务
[root@iZwz9cngn5wj3bafyrd539Z /]# /etc/init.d/mysqld start
Starting MySQL.                                            [  OK  ]
[root@iZwz9cngn5wj3bafyrd539Z /]# /etc/init.d/mysqld stop
Shutting down MySQL..                                      [  OK  ]
[root@iZwz9cngn5wj3bafyrd539Z /]#
  1. 将mysqld服务添加到chkconfig管理列表,然后就可以通过service对mysql进行启动和停止了
[root@iZwz9cngn5wj3bafyrd539Z /]# chkconfig --add mysqld

[root@iZwz9cngn5wj3bafyrd539Z /]# service mysqld start
Starting MySQL.                                            [  OK  ]
[root@iZwz9cngn5wj3bafyrd539Z /]# service mysqld stop
Shutting down MySQL..                                      [  OK  ]
[root@iZwz9cngn5wj3bafyrd539Z /]# 
  1. 设置终端模式开机启动
[root@iZwz9cngn5wj3bafyrd539Z /]# chkconfig mysqld on

设置tomcat自动启动

  1. 编辑startup.sh文件
//到tomcat/bin目录下,在#!/bin/sh这一行下面,也就是第二行,添加如下内容
#chkconfig: 2345 80 90    
#description:tomcat auto start    
#processname: tomcat
  1. 编辑catalina.sh文件
//搜索export位置,在后面添加
export CATALINA_BASE=/usr/local/tomcat
export CATALINA_HOME=/usr/local/tomcat
export CATALINA_TMPDIR=/usr/local/tomcat

//在#!/bin/sh这一行下面,也就是第二行,添加Java路径
export JAVA_HOME=/software/java/jdk1.8.0_171
export JER_HOME=/software/java/jdk1.8.0_171/jre
  1. 链接starup.sh文件到/etc/init.d/目录下,并添加操作权限
ln -s /software/tomcat/apache-tomcat-8.5.32/bin/startup.sh /etc/init.d/tomcat8

chmod a+x /etc/init.d/tomcat8
  1. 添加tomcat8文件到开机启动服务列表
chkconfig --add tomcat8

chkconfig tomcat8 on 

chkconfig --list

设置nginx开机自启动

  1. 编辑自启动脚本文件,并保存到/etc/init.d/nginx
//nginx官方链接:https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/

//需要修改的地方
nginx=”/usr/sbin/nginx” 修改成nginx执行程序的路径。
NGINX_CONF_FILE=”/etc/nginx/nginx.conf” 修改成配置文件的路径。

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15
# description:  NGINX is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {
   # make required directories
   user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
   if [ -n "$user" ]; then
      if [ -z "`grep $user /etc/passwd`" ]; then
         useradd -M -s /bin/nologin $user
      fi
      options=`$nginx -V 2>&1 | grep 'configure arguments:'`
      for opt in $options; do
          if [ `echo $opt | grep '.*-temp-path'` ]; then
              value=`echo $opt | cut -d "=" -f 2`
              if [ ! -d "$value" ]; then
                  # echo "creating" $value
                  mkdir -p $value && chown -R $user $value
              fi
          fi
       done
    fi
}

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest || return $?
    stop
    sleep 1
    start
}

reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}

force_reload() {
    restart
}

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac
  1. 设置文件的执行权限
chmod a+x /etc/init.d/nginx
  1. 添加nginx到chkconfig
[root@iZwz9cngn5wj3bafyrd539Z ~]# chkconfig --add nginx
[root@iZwz9cngn5wj3bafyrd539Z ~]# chkconfig --list
[root@iZwz9cngn5wj3bafyrd539Z ~]# chkconfig --level 2345 nginx on

设置redis开机自启动

  1. 复制redis安装目录下的/redis/utils/redis_init_script到/etc/init.d/redis
cp /software/redis/redis-3.2.12/utils/redis_init_script /etc/init.d/redis
  1. 编辑redis文件
//1.在#!/bin/sh下一行,添加chkconfig配置
//redis服务必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,关闭的优先级是10
# chkconfig: 2345 10 90  
# description: Start and Stop redis

//2.修改redis安装的相关目录
REDISPORT=6379
EXEC=/software/redis/redis-3.2.12/src/redis-server
CLIEXEC=/software/redis/redis-3.2.12/src/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/software/redis/redis-3.2.12/redis.conf"
  1. 设置文件的执行权限
chmod a+x /etc/init.d/redis
  1. 添加nginx到chkconfig
[root@iZwz9cngn5wj3bafyrd539Z ~]# chkconfig --add redis
[root@iZwz9cngn5wj3bafyrd539Z ~]# chkconfig --list
[root@iZwz9cngn5wj3bafyrd539Z ~]# chkconfig redis on