Tomcat重启脚本restart.sh停止脚本stop.sh

Tomcat本身提供了 startup.sh(启动)shutdown.sh(关闭)脚本,我们在部署中经常会出现死进程形象,无法杀掉进程需要查询进程号kill掉才能正常启动。
通过restart.sh脚本来解决这个问题比较好。

PS:经过后期的使用和验证之前写的脚本还是存在问题,可以看我重新写的一篇文章,参考这个可以比较好的解决问题

完美解决Linux服务器tomcat开机自启动问题 - 流风,飘然的风 - 博客园
http://www.cnblogs.com/zdz8207/p/linux-tomcat-autostartup.html

# tail -n 1 /home/server/shichuan/logs/catalina.out |grep 'INFO: Server startup in'
INFO: Server startup in 37417 ms
这个才是真正的启动成功,由于是用autostart的方式会先执行停止后启动,一定不会重新最后一行是之前启动成功留下来的
启动成功需要40秒左右,应该先sleep 足够长的时间再检测,否则会出现启动多个tomcat进程的问题
一次性杀掉多个tomcat进程命令:
ps -ef|grep -v grep|grep /home/server/shichuan/ | grep java |awk '{print "kill -9 "$2}'|sh

----------------------

下面是进过改进版的restart.sh

#!/bin/sh
TOMCAT_PATH=/home/server/shichuan/bin echo "TOMCAT_PATH is $TOMCAT_PATH" PID=`ps aux | grep /home/server/shichuan/ | grep java | awk '{print $2}'` if [ -n "$PID" ]; then
echo "Will shutdown tomcat: $PID"
$TOMCAT_PATH/shutdown.sh -force
sleep
else echo "No Tomcat Process $PID"
fi ps -ef|grep -v grep|grep /home/server/shichuan/ | grep java |awk '{print "kill -9 "$2}'|sh
sleep $TOMCAT_PATH/startup.sh sleep for((i=;i<;i++))
do
LASTINFO=`tail -n /home/server/shichuan/logs/catalina.out |grep 'INFO: Server startup in'`
if [ -n "$LASTINFO" ]; then
break
else
ps -ef|grep -v grep|grep /home/server/shichuan/ | grep java |awk '{print "kill -9 "$2}'|sh
sleep
$TOMCAT_PATH/startup.sh
sleep
fi
done

----------------------------------------
2.脚本
注意:一台服务器如果运行多个tomcat实例,不要配环境变量,容易启动错误,除了端口变换外,
restart.sh脚本#{tomcat目录}命名要区别,不然kill掉所有tomcat进程
TOMCAT_PATH为tomcat的bin目录,前后不能有反引号
---------------------
restart.sh
---------------------
#!/bin/sh
TOMCAT_PATH=#{tomcat目录}/bin

echo "TOMCAT_PATH is $TOMCAT_PATH"

PID=`ps aux | grep #{tomcat目录} | grep java | awk '{print $2}'`

if [ -n "$PID" ]; then
echo "Will kill tomcat: $PID"
sh "$TOMCAT_PATH/shutdown.sh"
sleep 6
else echo "No Tomcat Process $PID"
fi

PID2=`ps aux | grep #{tomcat目录} | grep java | awk '{print $2}'`

if [ -n "$PID2" ]; then
kill -9 $PID2
echo "Try to kill $PID2"
else echo "No Tomcat Process $PID2"
fi

sh "$TOMCAT_PATH/startup.sh"
sleep 3

PID=`ps aux | grep #{tomcat目录} | grep java | awk '{print $2}'`
if [ -n "$PID" ]; then
echo "\nRestart tomcat successfully!"
else
echo "\nFail to startup tomcat"
exit 1
fi

#!/bin/sh
TOMCAT_PATH=#{tomcat目录}/bin echo "TOMCAT_PATH is $TOMCAT_PATH" PID=`ps aux | grep #{tomcat目录} | grep java | awk '{print $2}'` if [ -n "$PID" ]; then
echo "Will kill tomcat: $PID"
sh "$TOMCAT_PATH/shutdown.sh"
sleep
else echo "No Tomcat Process $PID"
fi PID2=`ps aux | grep #{tomcat目录} | grep java | awk '{print $2}'` if [ -n "$PID2" ]; then
kill - $PID2
echo "Try to kill $PID2"
else echo "No Tomcat Process $PID2"
fi sh "$TOMCAT_PATH/startup.sh"
sleep PID=`ps aux | grep #{tomcat目录} | grep java | awk '{print $2}'`
if [ -n "$PID" ]; then
echo "\nRestart tomcat successfully!"
else
echo "\nFail to startup tomcat"
exit
fi

===================================
停止脚本stop.sh
-------------------------
#!/bin/sh
TOMCAT_PATH=#{tomcat目录}/bin

echo "TOMCAT_PATH is $TOMCAT_PATH"

PID=`ps aux | grep #{tomcat目录} | grep java | awk '{print $2}'`

if [ -n "$PID" ]; then
echo "Will kill tomcat: $PID"
sh "$TOMCAT_PATH/shutdown.sh"
sleep 6
else echo "No Tomcat Process $PID"
fi

PID2=`ps aux | grep #{tomcat目录} | grep java | awk '{print $2}'`

if [ -n "$PID2" ]; then
kill -9 $PID2
echo "Try to kill $PID2"
else echo "No Tomcat Process $PID2"
fi

#!/bin/sh
TOMCAT_PATH=#{tomcat目录}/bin echo "TOMCAT_PATH is $TOMCAT_PATH" PID=`ps aux | grep #{tomcat目录} | grep java | awk '{print $2}'` if [ -n "$PID" ]; then
echo "Will kill tomcat: $PID"
sh "$TOMCAT_PATH/shutdown.sh"
sleep
else echo "No Tomcat Process $PID"
fi PID2=`ps aux | grep #{tomcat目录} | grep java | awk '{print $2}'` if [ -n "$PID2" ]; then
kill - $PID2
echo "Try to kill $PID2"
else echo "No Tomcat Process $PID2"
fi

===================================

创建文件后需要给执行权限
chmod +x restart.sh
chmod +x stop.sh
或者设置成777等权限
重启tomcat时到bin目录下执行./restart.sh 就可以了

===================================
在window本地编辑sh上传可能遇到下面问题,需要解决编码问题
最好的办法是直接使用vi或vim命令创建文件,把内容粘帖进去

错误1.Linux执行.sh文件,提示No such file or directory的问题的解决方法

错误2.bin/sh^M: bad interpreter: No such file or directory解决方法

原因是.sh脚本在windows系统下用记事本文件编写的。不同系统的编码格式引起的。
1.利用如下命令查看文件格式
:set ff 或 :set fileformat
可以看到如下信息
fileformat=dos 或 fileformat=unix
利用如下命令修改文件格式
:set ff=unix 或 :set fileformat=unix
:wq (存盘退出)

2.最好的办法是直接使用vi或vim命令创建文件,把内容粘帖进去

==================================
[root@iZwz96l7gxttha3j1hk494Z bin]# ./restart.sh
./restart.sh: line 1: #!/bin/sh: No such file or directory
./restart.sh: line 2: #{tomcat目录}/bin: is a directory
TOMCAT_PATH is
No Tomcat Process

Tomcat重启脚本restart.sh停止脚本stop.sh的更多相关文章

  1. Tomcat重启Shell脚本

    --测试通过 vim restart_tomcat.sh#!/bin/bash# Filename: restart_tomcat.sh# Description: Restart tomcat# D ...

  2. Nginx和PHP-FPM的启动、重启、停止脚本分享

    这篇文章主要介绍了Nginx和PHP-FPM的启动.重启.停止脚本分享,脚本中包含start.stop.reload.restart等常用的管理方法,并可以加入系统服务然后使用servicem命令管理 ...

  3. 分享一例脚本发版和tomcat重启脚本

    线上有个网站业务部署在tomcat上,由于频繁上线修改,需要经常启动tomcat.tomcat服务自带的bin下没有重启脚本,下面分享一例脚本发版和tomcat重启脚本: 1)现将业务代码从svn里下 ...

  4. jenkins自动部署应用到tomcat中,编译后shell脚本的简单示例

    jenkins的安装这里就不做描述了,很简单的  百度搜索一下即可 这里安装的jenkins-2.39-1.1 wget http://pkg.jenkins-ci.org/redhat/jenkin ...

  5. Linux Oracle服务启动&停止脚本与开机自启动

    在CentOS 6.3下安装完Oracle 10g R2,重开机之后,你会发现Oracle没有自行启动,这是正常的,因为在Linux下安装Oracle的确不会自行启动,必须要自行设定相关参数,首先先介 ...

  6. Linux Oracle服务启动&停止脚本与开机自启动[转]

    在CentOS 6.3下安装完Oracle 10g R2,重开机之后,你会发现Oracle没有自行启动,这是正常的,因为在Linux下安装Oracle的确不会自行启动,必须要自行设定相关参数,首先先介 ...

  7. 【转】Linux Oracle服务启动&停止脚本与开机自启动

    在CentOS 6.3下安装完Oracle 10g R2,重开机之后,你会发现Oracle没有自行启动,这是正常的,因为在Linux下安装Oracle的确不会自行启动,必须要自行设置相关参数,首先先介 ...

  8. (转)Linux Oracle服务启动&停止脚本与开机自启动

    在CentOS 6.3下安装完Oracle 10g R2,重开机之后,你会发现Oracle没有自行启动,这是正常的,因为在Linux下安装Oracle的确不会自行启动,必须要自行设定相关参数,首先先介 ...

  9. Linux&nbsp;Oracle服务启动&amp;停止脚本与开机自启动

    在CentOS 6.3下安装完Oracle 10g R2,重开机之后,你会发现Oracle没有自行启动,这是正常的,因为在Linux下安装Oracle的确不会自行启动,必须要自行设定相关参数,首先先介 ...

随机推荐

  1. stl循环删除

    struct st_data { st_data(int i) : id(i) {} int id; }; 对于STL标准序列容器vector/deque/list(以vector为例) 当我们需清空 ...

  2. django学习笔记

    django笔记----建立疾病预测系统的web应用                            @buyizhiyou               工作环境:ubuntu16.04LTS+ ...

  3. 记录一次Tomcat内存泄露原因的追溯

    现象:WEB无法访问.SSH无法登陆.桌面登陆验证失败. 重启服务器后登陆正常. cat /var/log/message显示root用户创建了2000多个sessions后显示内存不足. 进入tom ...

  4. Chrome 控制台使用大全

    Chrome的开发者工具已经强大到没朋友的地步了,特别是功能丰富界面友好的console 一.console.log 将输出到控制台的信息进行分类会更好: console.log();    普通信息 ...

  5. Magento Connector: Error: Please check for sufficient write file permissions

    请确保下面的文件是可写的: /path/to/your/magento-install/path/to/your/magento-install/downloader/path/to/your/mag ...

  6. iOS 导航栏返回的相关跳转

    导航条跳转页面的考虑 对于用navigationcontroller来跳转页面的时候,其实是执行堆栈的进栈和出栈的操作,要想释放内存,那么在来回跳转的时候,就要考虑几个问题了 1 A =>B=& ...

  7. java://Comparator、Comparable的用法(按照要求将map集合的键值对进行顺序输出)

    import java.util.*; public class Person implements Comparable<Person>//使Person的属性具有比较性 { priva ...

  8. vmware centos nat模式下连不上网络解决办法

    简单来讲,当你创建一台虚拟机时,VMware为你虚拟了三种接入网络的方式:桥连接,NAT,使用主机网络,Vmware 10中默认对应 VMnet0,VMnet1,VMnet8 .    当选择桥连接方 ...

  9. iPhone CSS media query(媒体查询)

    iPhone5  iPhone6  iPhone6Plus iPad设备 media query(媒体查询)代码. iPhone < 5: @media screen and (device-a ...

  10. sp_helpdb

    语法 sp_helpdb [ [ @dbname= ] 'name' ] 参数 [@dbname=] 'name' 是要为其提供信息的数据库名称.name 的数据类型为 sysname,无默认值.如果 ...