centos中设置服务自动启动

来源:互联网 发布:巴丁算法集app 编辑:程序博客网 时间:2024/06/06 01:01

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

systemctl start nginx.service          启动nginxsystemctl 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/jdksu - 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 Interfaceexport JAVA_HOME=/usr/loacl/jdkexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATHPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binNAME=AmoebaAMOEBA_BIN=/usr/local/amoeba/bin/startSHUTDOWN_BIN=/usr/local/amoeba/bin/stopPIDFILE=/root/amoeba/Amoeba-MySQL.pidSCRIPTNAME=/etc/init.d/amoebacase "$1" instart)echo -n "Starting $NAME... "$AMOEBA_BINecho " done";;stop)echo -n "Stoping $NAME... "$SHUTDOWN_BINecho " done";;restart)$SHUTDOWN_BINsleep 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 0nginx="/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 ] && . $sysconfigstart() {    [ -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 logsreopen_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 2esac

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/tomcatexport CATALINA_HOME=/home/cs/tomcatexport CATALINA_TMPDIR=/home/cs/tomcat/tempexport JRE_HOME=/home/cs/java# Source function library.. /etc/init.d/functions TOMCAT=/home/cs/tomcatstart() {     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)       stopsleep 2       start    ;; *)echo "Usage: $0 {start stop restart}" ;;esac

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