centos中设置服务自动启动

centos6很centos7中有些不同,centos7中用systemctl命令(系统服务管理器指令)将centos6中的 service 和 开机启动命令chkconfig 这两个命令组合到一起。
在centos7中进行设置(以用yum安装的nginx为例):

systemctl start nginx.service          启动nginx
systemctl status nginx.service         查看nginx状态
systemctl enable nginx.service         设置nginx开机自动启动
systemctl is-enabled nginx.service     查看nginx是否是开机自动启动

可以看到在centos7中设置自动启动还是很方便的,也可以在rc.local中设置启动命令(以tomcat为例):

/usr/local/tomcat/bin/startup.sh                  设置绝对路径就可以
export JAVA_HOME=/usr/share/jdk
su - cs -c '/usr/local/tomcat/bin/startup.sh'     如果不想用root启动也可以转到普通用户,cs是用户

但我有次设置nginx开机自动启动的时候,发现nginx虽然起来了,但是不是根据etc下的配置文件启动的,后来才知道是linux中的selinux在作怪,可以在selinux中使用放行命令,也可以关掉selinux。

centos6中呢,则需要创建启动脚本,然后放到init.d中并设置开机自动启动,如:

amoeba的启动脚本:

#!/bin/sh
# chkconfig: 12345 62 62
# description: amoeba 3.05 AutoRun Servimces
# /etc/init.d/amoeba
#
# Run-level Startup script for the Oracle Instance, Listener, and
# Web Interface
export JAVA_HOME=/usr/loacl/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=Amoeba
AMOEBA_BIN=/usr/local/amoeba/bin/start
SHUTDOWN_BIN=/usr/local/amoeba/bin/stop
PIDFILE=/root/amoeba/Amoeba-MySQL.pid
SCRIPTNAME=/etc/init.d/amoeba

case "$1" in
start)
echo -n "Starting $NAME... "
$AMOEBA_BIN
echo " done"
;;

stop)
echo -n "Stoping $NAME... "
$SHUTDOWN_BIN
echo " done"
;;

restart)
$SHUTDOWN_BIN
sleep 1
$AMOEBA_BIN
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}"
exit 1
;;

esac

nginx的启动脚本:

#!/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)

sysconfig="/etc/sysconfig/$prog"
lockfile="/var/lock/subsys/nginx"
pidfile="/var/run/${prog}.pid"

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

[ -f $sysconfig ] && . $sysconfig


start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    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 -p $pidfile $prog
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest_q || return 6
    stop
    start
}

reload() {
    configtest_q || return 6
    echo -n $"Reloading $prog: "
    killproc -p $pidfile $prog -HUP
    echo
}

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

configtest_q() {
    $nginx -t -q -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

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

# Upgrade the binary with no downtime.
upgrade() {
    local oldbin_pidfile="${pidfile}.oldbin"

    configtest_q || return 6
    echo -n $"Upgrading $prog: "
    killproc -p $pidfile $prog -USR2
    retval=$?
    sleep 1
    if [[ -f ${oldbin_pidfile} && -f ${pidfile} ]];  then
        killproc -p $oldbin_pidfile $prog -QUIT
        success $"$prog online upgrade"
        echo 
        return 0
    else
        failure $"$prog online upgrade"
        echo
        return 1
    fi
}

# Tell nginx to reopen logs
reopen_logs() {
    configtest_q || return 6
    echo -n $"Reopening $prog logs: "
    killproc -p $pidfile $prog -USR1
    retval=$?
    echo
    return $retval
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest|reopen_logs)
        $1
        ;;
    force-reload|upgrade) 
        rh_status_q || exit 7
        upgrade
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    status|status_q)
        rh_$1
        ;;
    condrestart|try-restart)
        rh_status_q || exit 7
        restart
        ;;
    *)
        echo $"Usage: $0 {start|stop|reload|configtest|status|force-reload|upgrade|restart|reopen_logs}"
        exit 2
esac

tomcat自动启动脚本(用cs用户进行启动):

#!/bin/sh

# tomcat: Start/Stop/Restart tomcat
# chkconfig: 2345 40 20
# description: Tomcat is a Java Servlet Container
# match these values to your environment:
export CATALINA_BASE=/home/cs/tomcat
export CATALINA_HOME=/home/cs/tomcat
export CATALINA_TMPDIR=/home/cs/tomcat/temp
export JRE_HOME=/home/cs/java
# Source function library.
. /etc/init.d/functions TOMCAT=/home/cs/tomcat
start() {
     echo -n "Starting Tomcat:  "
     #/root/rc.local start
      su - cs  /home/cs/tomcat/bin/startup.sh start
   }
stop() {
    echo -n "Stopping Tomcat: "
       su - cs /home/cs/tomcat/bin/shutdown.sh stop
}
# See how we were called.
case "$1" in
  start)
      start
  ;;
    stop)
        stop
    ;;
 status)
    ;;
    restart)
       stop
sleep 2
       start
    ;;
 *)
echo "Usage: $0 {start stop restart}" ;;
esac

将启动脚本放到/etc/init.d中然后用命令加入并设置开机自动启动:
chkconfig –add tomcat
chkconfig –level 2345 tomcat on

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值