1. 程式人生 > >linux下實現tomcat定時自動重啟

linux下實現tomcat定時自動重啟

        tomcat自帶的指令碼中沒有提供直接restart的模式,但是有start和shutdown兩種模式。要實現restart模式,實際上只需要判斷是否已經啟動tomcat,若已經啟動則限制性shutdown,然後在執行start。或者通過ps aux查詢出是否存在tomcat程序,若存在kill -9 tomcat的pid,再進行啟動tomcat.通過shell指令碼實現tomcat重啟,並將該指令碼新增到linux的定時任務計劃中,就可以實現tomcat的定時自啟動功能。

  •          以下是實現tomcat重啟的shell指令碼
#!/bin/sh    
#初始化全域性環境變數
. /etc/profile

#查詢tomcat的pid
pid=`ps aux | grep tomcat | grep -v grep | grep -v Restart | grep -v restart | awk '{print $2}'`
echo "the tomcat pid is $pid"  

#判斷tomcat程序是否存在
if [ -n "$pid" ];then
   sleep 1
   pid=`ps aux | grep tomcat | grep -v grep | grep -v restart | grep -v Restart | awk '{print $2}'`
   if [ -n "$pid" ]; then
      sleep 1
      echo "tomcat程序將被殺死."
      kill -9 $pid
   fi
   
   sleep 1  

   echo "tomcat程序已經被殺死,先重新啟動tomcat." 
   service tomcat start
else
    echo "tomcat程序不存在,先重新啟動tomcat."
    service tomcat start
fi
                     
     由於我原來對tomcat已經做了服務自啟動,因此可以直接執行service tomcat start 啟動tomcat。
  • 實現tomcat定時任務
vi /etc/crontab
可以看到以下內容
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed


以上備註說明非常清楚,不再加以詳細說明,將tomcat重啟執行指令碼語句新增到最後一行。
#設定每天凌晨3點整重啟tomcat
0 3 * * * root sh /home/scripts/tomcat/restart >> /home/logs/tomcat/restart.log

特別注意,在寫完指令碼後要enter,否則crond服務無法識別,定時任務無法生效

儲存並重啟crontab服務

service crond restart

以上便完成了tomcat的定時重啟功能