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