Centos配置开机自启动脚本并通过service命令管理
配置开机自启动脚本,文章提供两个方法:分别利用/etc/init.d目录和/etc/rc.d/rc.local文件
方法1:将可执行的开机启动脚本加入到/etc/init.d/目录下,并利用chkconfig配置开机自启动,重启生效
1)、切换到/etc/init.d/
[root@www ~]# cd /etc/init.d/
2)、编辑开机启动服务脚本
vim xxx.sh
[root@www init.d]# vim starttomcat.sh
#!/bin/sh
#配置Tomcat开机自启并使用service命令管理
#chkconfig: 2345 70 30
#进程:
starttomcat.sh
. /etc/profile.d/java.sh;
. /etc/profile.d/tomcat.sh;
catalina.sh start;
#命令间用;隔开,每个命令都会执行,但是各个命令的执行给果(不论成功与否),都不会影响其它命令的执行。
#命令间用&&(与)隔开:当且仅当前一个命令执行成功时后一个命令才会被执行,保证所有的命令执行完毕后,执行过程都是成功的。
#命令间用||(或)隔开:当且仅当前一个命令执行失败时后一个命令才会被执行,保证成功执行一条命令就停止执行。
其中java.sh和tomcat.sh为环境变量配置
[root@www ~]# cat
/etc/profile.d/java.sh
export JAVA_HOME=/usr/local/jdk8
export PATH=$JAVA_HOME/bin:$PATH
[root@www ~]# cat /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
3)、给脚本加上可执行权限
[root@www init.d]# chmod +x starttomcat.sh
4)、将脚本设置为自启动
[root@www init.d]# chkconfig --add
starttomcat.sh
5)、重启验证是否开机自启:curl页面或ps进程
[root@www init.d]# reboot
[root@www ~]# curl
http://192.168.88.131:8080/app1/
[root@www logs]# ps -ef |grep tomcat|grep -v
grep
root
2397
1 1 16:29
?
00:00:05 /usr/local/jdk8/bin/java
-Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djdk.tls.ephemeralDHKeySize=2048
-Djava.protocol.handler.pkgs=org.apache.catalina.webresources
-Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath
/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
-Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat
-Djava.io.tmpdir=/usr/local/tomcat/temp
org.apache.catalina.startup.Bootstrap start
[root@www logs]# chkconfig --list
starttomcat.sh
starttomcat.sh
0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
#2345是指脚本的运行级别,即在2345这4种模式下都可以运行,234都是文本界面,5就是图形界面X
方法2:利用开机自启动文件/etc/rc.d/rc.local,将可执行脚本路径加入该文件中,开机自动执行
1)、自行定义开机自启动脚本存放路径,并创建脚本
[root@www ~]# mv /etc/init.d/starttomcat.sh
/home/fieldyang/
2)、
给脚本加上可执行权限
[root@www ~]# chmod +x starttomcat.sh
3)、将脚本路径加入/etc/rc.d/rc.local文件中,如下的“/home/fieldyang/starttomcat.sh”
[root@www fieldyang]# cd /etc/rc.d/
[root@www rc.d]# vim 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
/home/fieldyang/starttomcat.sh
4)、重启测试服务是否自启动
[root@www init.d]# reboot
[root@www ~]# curl http://192.168.88.131:8080/app1/
访问Tomcat服务页面
[root@www ~]# ps -ef |grep tomcat|grep -v grep
root
2592
1 2 16:50
?
00:00:04 /usr/local/jdk8/bin/java
-Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djdk.tls.ephemeralDHKeySize=2048
-Djava.protocol.handler.pkgs=org.apache.catalina.webresources
-Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath
/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
-Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat
-Djava.io.tmpdir=/usr/local/tomcat/temp
org.apache.catalina.startup.Bootstrap start
注意:在centos7中,/etc/rc.d/rc.local文件的权限被降低了,执行下面的命令可以文件标记为可执行的文件:chmod
+x /etc/rc.d/rc.local
生产案例:一个shell启动脚本,在centos下配置可以通过service命令管理的服务
以下是一个实现Tomcat启停的简单脚本,配置实现tomcat开机自启动,并能使用service命令管理,步骤如下:
方便测试状态,curl
http://192.168.88.131:8080/app1/会返回一个测试页面
编辑启动和管理脚本
[root@www ~]# vim /etc/init.d/tomcatd
#!/bin/sh
#配置Tomcat开机自启并使用service命令管理
#chkconfig: 2345 70 30
#服务:
tomcatd
if [ -f /etc/init.d/functions ]; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ]; then
. /etc/rc.d/init.d/functions
else
echo -e "/atomcat: unable to locate functions lib. Cannot
continue."
exit -1
fi
. /etc/profile.d/java.sh;
. /etc/profile.d/tomcat.sh;
#注意,此处必须读取配置,否则Tomcat自启动后仍旧无法启动web程序
RETVAL=$?
case "$1" in
start)
. /etc/profile.d/java.sh;
.
/etc/profile.d/tomcat.sh;
catalina.sh
start;
;;
stop)
. /etc/profile.d/java.sh;
. /etc/profile.d/tomcat.sh;
catalina.sh
stop;
echo "Tomcat Stopped!"
;;
status)
curl http://192.168.88.131:8080/app1/ >/dev/null
2>&1
if [ $? = 0 ]; then
echo "Service Tomcat is Running....."
else
echo "Service Tomcat is Stopped! Please Enter ‘service tomcatd
start' To Start."
fi
;;
restart)
echo "Restart Tomcat Now ..."
catalina.sh
stop
>/dev/null 2>&1;
echo "Tomcat is Stopping....."
sleep 1
echo "Stop Tomcat OK !"
echo "Start Tomcat Now ..."
. /etc/profile.d/java.sh;
. /etc/profile.d/tomcat.sh;
catalina.sh
start;
;;
configtest)
. /etc/profile.d/java.sh;
. /etc/profile.d/tomcat.sh;
catalina.sh
configtest;
;;
*)
echo "Usage: service tomcatd
{start|stop|status|restart|configtest}"
exit 1
esac
exit $RETVAL
添加脚本执行权限
[root@www init.d]# chmod +x tomcatd
挂载:将这个shell文件的link连到/etc/rc2.d/目录下:
linux的/etc/rcX.d/目录中的数字代表开机启动时不同的run
level,也就是启动的顺序,可能在目录中的程序启动时Tomcat所需要的一些库尚未被加载,使用ln命令将tomcatd的链接链过去。
rcX.d目录下的链接有自己的命名规则,因需要不同分别以S或K开头,之后的数字代表它们的启动顺序,详细看各自目录下的Readme文件。
[root@www init.d]# ln -s /etc/init.d/tomcatd
/etc/rc2.d/S16tomcatd
[root@www init.d]# cd -
/etc/rc2.d
[root@www rc2.d]# ls -lrt
使用chkconfig命令设置开机自启动
[root@www init.d]# chkconfig tomcatd on
[root@www init.d]# chkconfig --list tomcatd
tomcatd
0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
测试:重启看是否自动重启服务
[root@www init.d]# reboot
[root@www ~]# service tomcatd status
Service Tomcat is Running.....
[root@www ~]# service tomcatd stop
Using CATALINA_BASE:
/usr/local/tomcat
Using CATALINA_HOME:
/usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:
/usr/local/jdk8
Using CLASSPATH:
/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat Stopped!
[root@www ~]# service tomcatd status
Service Tomcat is Stopped! Please Enter ‘service tomcatd
start' To Start.
[root@www ~]# service tomcatd start
Using CATALINA_BASE:
/usr/local/tomcat
Using CATALINA_HOME:
/usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:
/usr/local/jdk8
Using CLASSPATH:
/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@www ~]# service tomcatd status
Service Tomcat is Running.....
[root@www ~]# service tomcatd restart
Restart Tomcat Now ...
Tomcat is Stopping.....
Stop Tomcat OK !
Start Tomcat Now ...
Using CATALINA_BASE:
/usr/local/tomcat
Using CATALINA_HOME:
/usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:
/usr/local/jdk8
Using CLASSPATH:
/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@www ~]# service tomcatd status
Service Tomcat is Running.....