linux下實現tomcat定時自動重啟
阿新 • • 發佈:2019-02-03
tomcat自帶的指令碼中沒有提供直接restart的模式,但是有start和shutdown兩種模式。要實現restart模式,實際上只需要判斷是否已經啟動tomcat,若已經啟動則限制性shutdown,然後在執行start。或者通過ps aux查詢出是否存在tomcat程序,若存在kill -9 tomcat的pid,再進行啟動tomcat.通過shell指令碼實現tomcat重啟,並將該指令碼新增到linux的定時任務計劃中,就可以實現tomcat的定時自啟動功能。
- 以下是實現tomcat重啟的shell指令碼
由於我原來對tomcat已經做了服務自啟動,因此可以直接執行service tomcat start 啟動tomcat。#!/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定時任務
vi /etc/crontab
可以看到以下內容
以上備註說明非常清楚,不再加以詳細說明,將tomcat重啟執行指令碼語句新增到最後一行。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
#設定每天凌晨3點整重啟tomcat
0 3 * * * root sh /home/scripts/tomcat/restart >> /home/logs/tomcat/restart.log
特別注意,在寫完指令碼後要enter,否則crond服務無法識別,定時任務無法生效
儲存並重啟crontab服務
service crond restart
以上便完成了tomcat的定時重啟功能