Linux系統(tǒng)上實現(xiàn)定時重啟Tomcat服務(wù)腳本介紹
因為使用阿里云部署服務(wù)器應(yīng)用時,Tomcat服務(wù)經(jīng)常由于內(nèi)存不足出現(xiàn)OutOfMemoryError異常的情況。經(jīng)常過幾天就需要重啟一次服務(wù)器,更要命的是不知道什么時候會由于內(nèi)存不足導(dǎo)致無法訪問,如果重啟不及時嚴重影響系統(tǒng)體驗。
為了解決上述問題,一方面是對tomcat配置做一些優(yōu)化,網(wǎng)上有很多文章講解如何優(yōu)化Tomcat內(nèi)存設(shè)置;另一方面就是寫一個shell腳本,每天定時重啟Tomcat服務(wù)。這里主要記錄一下如何寫shell腳本并且配置定時任務(wù)。本人使用的環(huán)境是阿里云Ubuntu服務(wù)器,以下配置在阿里云的Ubuntu服務(wù)器上能正常運行。
一、創(chuàng)建Shell腳本
新建一個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進程為:$pid" echo "[info][$(date +'%F %H:%M:%S')]tomcat已經(jīng)啟動,準備使用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)閉失敗,準備kill進程..." kill -9 $pid echo "[info][$(date +'%F %H:%M:%S')]kill進程完畢!" sleep 1 else echo "[info][$(date +'%F %H:%M:%S')]使用shutdown命令關(guān)閉成功!" fi else echo "[info][$(date +'%F %H:%M:%S')]tomcat未啟動!" fi echo "[info][$(date +'%F %H:%M:%S')]準備啟動tomcat..." $binPath"/startup.sh"
腳本的邏輯比較簡單,先查看tomcat進程是否存在,如果不存在則直接調(diào)用startup.sh命令啟動tomcat,如果tomcat的進程存在則調(diào)用shutdown.sh命令停掉tomcat服務(wù),有時會關(guān)閉失敗,所以在檢查一下tomcat進程時候還存在,如果存在就使用kill命令殺掉該進程,然后啟動tomcat。
這里有一個地方需要注意,第二行代碼(. /etc/profile)不能省掉,需要將環(huán)境變量引入到當前腳本環(huán)境中,要不然會導(dǎo)致啟動定時任務(wù)時運行腳本失敗,會報以下錯誤:
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í)行,當然要把文件設(shè)置為可執(zhí)行文件了。
chmod 777 tomcat.sh
三、建立定時任務(wù)
在控制臺上輸入使用crontab -e 命令進入編輯crontab腳本,第一次輸入該命令時需要選擇編輯器。
選擇vim編輯器編輯就可,在文件后面增加一條任務(wù)。(我的腳本文件路徑是:/home/script/tomcat.sh)
然后保存并退出即可,接著使用crontab -l命令即可看到剛才新增的定時任務(wù)在列表里面。一般情況是直接生效,如果沒有生效可以使用sudo service cron restart命令重啟定時任務(wù)。
sudo service cron restart
四、定時任務(wù)描述語法
crontab中每一個定時任務(wù)的格式由6部分組成,分別是分鐘、小時、天、月、星期以及命令,前5部分用來配置任務(wù)觸發(fā)時機,中間使用空格隔開,如下:
minute hour day month dayofweek command
minute – 表示分鐘,值的范圍是從0到59的整數(shù)?
hour – 表示小時,值的范圍是從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ù)字以外還可以配合星號(*),逗號(,),斜杠(/),橫杠(-)組合來表示其他意義。
1. 星號(*)
表示任意值,比如:
30 01 * * * command #每天的1:30執(zhí)行命令
2. 逗號(,)
表示指定的時間,比如:
30 01 1,10,20 * * command #每月的1號、10號、20號的1:30分執(zhí)行命令
3. 斜杠(/)
表示每隔多長時間,比如:
* */2 * * * command #每個2小時執(zhí)行一次命令
4. 橫杠(-)
表示連續(xù)時間,比如:
* 1-7/1 * * * command #凌晨1點-7點之前每隔一小時執(zhí)行一次命令
五、其他
到此這篇關(guān)于Linux系統(tǒng)上實現(xiàn)定時重啟Tomcat服務(wù)腳本介紹的文章就介紹到這了,更多相關(guān)Linux系統(tǒng) 定時重啟Tomcat內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于使用shell腳本循環(huán)處理文本的問題
今天給大家普及關(guān)于使用shell腳本循環(huán)處理文本的問題,其實操作步驟很簡單,本文通過腳本實例給大家講解,感興趣的朋友跟隨小編一起看看吧2021-06-06虛擬機中使用linux系啟用文件共享之后的文件存在的位置方法
下面小編就為大家?guī)硪黄摂M機中使用linux系啟用文件共享之后的文件存在的位置方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02一天一個shell命令 linux文本內(nèi)容操作系列-awk命令詳解
awk是一個強大的文本分析工具,相對于grep的查找,sed的編輯,awk在其對數(shù)據(jù)分析并生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各種分析處理2016-06-06shell監(jiān)控系統(tǒng)資源并通過短信報警的腳本
這篇文章主要介紹了shell監(jiān)控系統(tǒng)資源并通過短信報警的腳本,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12