1.先确定tomcat/bin目录下的startup和shutdown脚本能不能使用
[root@localhost bin]# ./startup.sh
Cannot find /usr/local/tomcat8/bin/setclasspath.sh
This file is needed to run this program
复制代码
发现并不能直接使用
-
这个问题的出现,表示环境变量没配置好
-
编辑环境变量 vi /etc/profile
-
找到相关的配置
\#export JAVA_HOME=/usr/java/jdk1.8 export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.92-1.b14.fc23.x86_64/jre export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CATALINA_BASE/lib export CATALINA_BASE=/usr/local/tomcat8/ export CATALINA_HOME=/usr/local/tomcat8/ export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$CATALINA_BASE/bin 复制代码
-
其中的CATALINA_BASE和CATALINA_HOME并没有指向正确,因为我tomcat8目录下还有一层目录,修改即可
-
使修改生效: . /etc/profile(. /中间有一个空格)
-
再次运行: ./startup.sh,成功
2.写脚本
-
将下面的代码直接保存到一个sh文件
#!/bin/sh
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.92-1.b14.fc23.x86_64/jre
pid=
ps -auxww|grep tomcat|grep -v grep|awk '{print $2}'
echo $pid
if [ -n "$pid" ];
then
{
echo "==========tomcat is start============"
'/usr/local/tomcat8/apache-tomcat-8.0.35/bin/shutdown.sh'
sleep 5
'/usr/local/tomcat8/apache-tomcat-8.0.35/bin/shutdown.sh'
sleep 15
pid=
ps -auxww|grep tomcat|grep -v grep|awk '{print $2}'
if [ -n "$pid" ];
then
{
echo "======to kill the tomcat pid $pid========"
kill $pid
sleep 3
}
fi
echo "==========start tomcat============"
'/usr/local/tomcat8/apache-tomcat-8.0.35/bin/startup.sh'
}
else
{
echo "==========tomcat is stop=====start======="
'/usr/local/tomcat8/apache-tomcat-8.0.35/bin/startup.sh'
}
fi
其中要注意Java_home和tomcat脚本的路径是不是正确
-
测试下正不正确
[root@localhost auto_exec]# ./test.sh bash: ./test.sh: 权限不够
-
赋予权限
chmod 777 *.sh
-
再次启动
[root@localhost auto_exec]# ./test.sh ----------tomcat is stop----start=======
Using CATALINA_BASE: /usr/local/tomcat8/apache-tomcat-8.0.35 Using CATALINA_HOME: /usr/local/tomcat8/apache-tomcat-8.0.35 Using CATALINA_TMPDIR: /usr/local/tomcat8/apache-tomcat-8.0.35/temp Using JRE_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.92- 1.b14.fc23.x86_64/jre Using CLASSPATH: /usr/local/tomcat8/apache-tomcat-8.0.35/bin/bootstrap.jar:/usr/local/tomcat8/apache-tomcat-8.0.35/bin/tomcat-juli.jar Tomcat started.
-
重启
[root@localhost auto_exec]# ./test.sh 10785 ==========tomcat is start============ Using CATALINA_BASE: /usr/local/tomcat8/apache-tomcat-8.0.35 Using CATALINA_HOME: /usr/local/tomcat8/apache-tomcat-8.0.35 Using CATALINA_TMPDIR: /usr/local/tomcat8/apache-tomcat-8.0.35/temp Using JRE_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.92-1.b14.fc23.x86_64/jre Using CLASSPATH: /usr/local/tomcat8/apache-tomcat-8.0.35/bin/bootstrap.jar:/usr/local/tomcat8/apache-tomcat-8.0.35/bin/tomcat-juli.jar 一月 12, 2017 9:51:24 上午 org.apache.catalina.startup.Catalina stopServer 严重: Could not contact localhost:8005. Tomcat may not be running. 一月 12, 2017 9:51:24 上午 org.apache.catalina.startup.Catalina stopServer 严重: Catalina.stop: java.net.ConnectException: 拒绝连接 at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at java.net.Socket.(Socket.java:434) at java.net.Socket.(Socket.java:211) at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:450) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:400) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:487)
Using CATALINA_BASE: /usr/local/tomcat8/apache-tomcat-8.0.35 Using CATALINA_HOME: /usr/local/tomcat8/apache-tomcat-8.0.35 Using CATALINA_TMPDIR: /usr/local/tomcat8/apache-tomcat-8.0.35/temp Using JRE_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.92-1.b14.fc23.x86_64/jre Using CLASSPATH: /usr/local/tomcat8/apache-tomcat-8.0.35/bin/bootstrap.jar:/usr/local/tomcat8/apache-tomcat-8.0.35/bin/tomcat-juli.jar 一月 12, 2017 9:51:29 上午 org.apache.catalina.startup.Catalina stopServer 严重: Could not contact localhost:8005. Tomcat may not be running. 一月 12, 2017 9:51:30 上午 org.apache.catalina.startup.Catalina stopServer 严重: Catalina.stop: java.net.ConnectException: 拒绝连接 at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at java.net.Socket.(Socket.java:434) at java.net.Socket.(Socket.java:211) at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:450) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:400) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:487)
======to kill the tomcat pid 10785======== ==========start tomcat============ Using CATALINA_BASE: /usr/local/tomcat8/apache-tomcat-8.0.35 Using CATALINA_HOME: /usr/local/tomcat8/apache-tomcat-8.0.35 Using CATALINA_TMPDIR: /usr/local/tomcat8/apache-tomcat-8.0.35/temp Using JRE_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.92-1.b14.fc23.x86_64/jre Using CLASSPATH: /usr/local/tomcat8/apache-tomcat-8.0.35/bin/bootstrap.jar:/usr/local/tomcat8/apache-tomcat-8.0.35/bin/tomcat-juli.jar Tomcat started.
证明脚本可以完美运行了
3.添加到定时任务
-
使用crontab命令
其中crontab -e,添加新的定时任务
输入*/5 0 * * * /home/auto_exec/test.sh 表示每五分钟执行一次
然后就大功告成