Linux系統(tǒng)上實(shí)現(xiàn)定時(shí)重啟Tomcat服務(wù)腳本介紹
因?yàn)槭褂冒⒗镌撇渴鸱?wù)器應(yīng)用時(shí),Tomcat服務(wù)經(jīng)常由于內(nèi)存不足出現(xiàn)OutOfMemoryError異常的情況。經(jīng)常過(guò)幾天就需要重啟一次服務(wù)器,更要命的是不知道什么時(shí)候會(huì)由于內(nèi)存不足導(dǎo)致無(wú)法訪問(wèn),如果重啟不及時(shí)嚴(yán)重影響系統(tǒng)體驗(yàn)。
為了解決上述問(wèn)題,一方面是對(duì)tomcat配置做一些優(yōu)化,網(wǎng)上有很多文章講解如何優(yōu)化Tomcat內(nèi)存設(shè)置;另一方面就是寫一個(gè)shell腳本,每天定時(shí)重啟Tomcat服務(wù)。這里主要記錄一下如何寫shell腳本并且配置定時(shí)任務(wù)。本人使用的環(huán)境是阿里云Ubuntu服務(wù)器,以下配置在阿里云的Ubuntu服務(wù)器上能正常運(yùn)行。
一、創(chuàng)建Shell腳本
新建一個(gè)tomcat.sh文件,輸入以下內(nèi)容:
#!/bin/bash
. /etc/profile
tomcatPath="/usr/local/tomcat"
binPath="$tomcatPath/bin"
echo "[info][$(date +'%F %H:%M:%S')]正在監(jiān)控tomcat,路徑:$tomcatPath"
pid=`ps -ef | grep tomcat | grep -w $tomcatPath | grep -v 'grep' | awk '{print $2}'`
if [ -n "$pid" ]; then
echo "[info][$(date +'%F %H:%M:%S')]tomcat進(jìn)程為:$pid"
echo "[info][$(date +'%F %H:%M:%S')]tomcat已經(jīng)啟動(dòng),準(zhǔn)備使用shutdown命令關(guān)閉..."
$binPath"/shutdown.sh"
sleep 2
pid=`ps -ef | grep tomcat | grep -w $tomcatPath | grep -v 'grep' | awk '{print $2}'`
if [ -n "$pid" ]; then
echo "[info][$(date +'%F %H:%M:%S')]使用shutdown命令關(guān)閉失敗,準(zhǔn)備kill進(jìn)程..."
kill -9 $pid
echo "[info][$(date +'%F %H:%M:%S')]kill進(jìn)程完畢!"
sleep 1
else
echo "[info][$(date +'%F %H:%M:%S')]使用shutdown命令關(guān)閉成功!"
fi
else
echo "[info][$(date +'%F %H:%M:%S')]tomcat未啟動(dòng)!"
fi
echo "[info][$(date +'%F %H:%M:%S')]準(zhǔn)備啟動(dòng)tomcat..."
$binPath"/startup.sh"
腳本的邏輯比較簡(jiǎn)單,先查看tomcat進(jìn)程是否存在,如果不存在則直接調(diào)用startup.sh命令啟動(dòng)tomcat,如果tomcat的進(jìn)程存在則調(diào)用shutdown.sh命令停掉tomcat服務(wù),有時(shí)會(huì)關(guān)閉失敗,所以在檢查一下tomcat進(jìn)程時(shí)候還存在,如果存在就使用kill命令殺掉該進(jìn)程,然后啟動(dòng)tomcat。
這里有一個(gè)地方需要注意,第二行代碼(. /etc/profile)不能省掉,需要將環(huán)境變量引入到當(dāng)前腳本環(huán)境中,要不然會(huì)導(dǎo)致啟動(dòng)定時(shí)任務(wù)時(shí)運(yùn)行腳本失敗,會(huì)報(bào)以下錯(cuò)誤:
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program
二、修改文件權(quán)限
要讓腳本可以執(zhí)行,當(dāng)然要把文件設(shè)置為可執(zhí)行文件了。
chmod 777 tomcat.sh
三、建立定時(shí)任務(wù)
在控制臺(tái)上輸入使用crontab -e 命令進(jìn)入編輯crontab腳本,第一次輸入該命令時(shí)需要選擇編輯器。

選擇vim編輯器編輯就可,在文件后面增加一條任務(wù)。(我的腳本文件路徑是:/home/script/tomcat.sh)

然后保存并退出即可,接著使用crontab -l命令即可看到剛才新增的定時(shí)任務(wù)在列表里面。一般情況是直接生效,如果沒(méi)有生效可以使用sudo service cron restart命令重啟定時(shí)任務(wù)。
sudo service cron restart
四、定時(shí)任務(wù)描述語(yǔ)法
crontab中每一個(gè)定時(shí)任務(wù)的格式由6部分組成,分別是分鐘、小時(shí)、天、月、星期以及命令,前5部分用來(lái)配置任務(wù)觸發(fā)時(shí)機(jī),中間使用空格隔開(kāi),如下:
minute hour day month dayofweek command
minute – 表示分鐘,值的范圍是從0到59的整數(shù)?
hour – 表示小時(shí),值的范圍是從0到23的整數(shù)?
day – 表示天,值的范圍是從1到31的整數(shù)
month – 表示月,值的范圍是從1到12的整數(shù)
dayofweek – 表示星期,值的范圍是從0到6的整數(shù) (0表示周日)
command – 需要執(zhí)行的命令(/home/script/tomcat.sh > /home/script/shlog.txt表示執(zhí)行tomcat.sh腳本,并且把結(jié)果日志打印到shlo.txt中)
?時(shí)間部分除了使用估計(jì)數(shù)字以外還可以配合星號(hào)(*),逗號(hào)(,),斜杠(/),橫杠(-)組合來(lái)表示其他意義。
1. 星號(hào)(*)
表示任意值,比如:
30 01 * * * command #每天的1:30執(zhí)行命令
2. 逗號(hào)(,)
表示指定的時(shí)間,比如:
30 01 1,10,20 * * command #每月的1號(hào)、10號(hào)、20號(hào)的1:30分執(zhí)行命令
3. 斜杠(/)
表示每隔多長(zhǎng)時(shí)間,比如:
* */2 * * * command #每個(gè)2小時(shí)執(zhí)行一次命令
4. 橫杠(-)
表示連續(xù)時(shí)間,比如:
* 1-7/1 * * * command #凌晨1點(diǎn)-7點(diǎn)之前每隔一小時(shí)執(zhí)行一次命令
五、其他
到此這篇關(guān)于Linux系統(tǒng)上實(shí)現(xiàn)定時(shí)重啟Tomcat服務(wù)腳本介紹的文章就介紹到這了,更多相關(guān)Linux系統(tǒng) 定時(shí)重啟Tomcat內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信