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)常過幾天就需要重啟一次服務(wù)器,更要命的是不知道什么時(shí)候會(huì)由于內(nèi)存不足導(dǎo)致無法訪問,如果重啟不及時(shí)嚴(yán)重影響系統(tǒng)體驗(yàn)。
為了解決上述問題,一方面是對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"
腳本的邏輯比較簡單,先查看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ù)在列表里面。一般情況是直接生效,如果沒有生效可以使用sudo service cron restart命令重啟定時(shí)任務(wù)。
sudo service cron restart
四、定時(shí)任務(wù)描述語法
crontab中每一個(gè)定時(shí)任務(wù)的格式由6部分組成,分別是分鐘、小時(shí)、天、月、星期以及命令,前5部分用來配置任務(wù)觸發(fā)時(shí)機(jī),中間使用空格隔開,如下:
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ù)字以外還可以配合星號(*),逗號(,),斜杠(/),橫杠(-)組合來表示其他意義。
1. 星號(*)
表示任意值,比如:
30 01 * * * command #每天的1:30執(zhí)行命令
2. 逗號(,)
表示指定的時(shí)間,比如:
30 01 1,10,20 * * command #每月的1號、10號、20號的1:30分執(zhí)行命令
3. 斜杠(/)
表示每隔多長時(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于使用shell腳本循環(huán)處理文本的問題
今天給大家普及關(guān)于使用shell腳本循環(huán)處理文本的問題,其實(shí)操作步驟很簡單,本文通過腳本實(shí)例給大家講解,感興趣的朋友跟隨小編一起看看吧2021-06-06shell腳本實(shí)現(xiàn)多彩進(jìn)度條
這篇文章主要介紹了shell腳本實(shí)現(xiàn)多彩進(jìn)度條的相關(guān)資料,需要的朋友可以參考下2017-07-07虛擬機(jī)中使用linux系啟用文件共享之后的文件存在的位置方法
下面小編就為大家?guī)硪黄摂M機(jī)中使用linux系啟用文件共享之后的文件存在的位置方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02shell一鍵部署Zabbix的實(shí)現(xiàn)步驟
本文主要介紹了shell一鍵部署Zabbix的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02一天一個(gè)shell命令 linux文本內(nèi)容操作系列-awk命令詳解
awk是一個(gè)強(qiáng)大的文本分析工具,相對于grep的查找,sed的編輯,awk在其對數(shù)據(jù)分析并生成報(bào)告時(shí),顯得尤為強(qiáng)大。簡單來說awk就是把文件逐行的讀入,以空格為默認(rèn)分隔符將每行切片,切開的部分再進(jìn)行各種分析處理2016-06-06shell監(jiān)控系統(tǒng)資源并通過短信報(bào)警的腳本
這篇文章主要介紹了shell監(jiān)控系統(tǒng)資源并通過短信報(bào)警的腳本,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12