天天看點

shell腳本定時重新開機tomcat

前幾天剛學了一點shell腳本,立馬測試一下,寫一個定時重新開機的腳本。

腳本編寫

shell基礎知識

想好處理邏輯後剩下的就是具體的實作:查詢目前tomcat的pid ,

kill

程序更直接(不用

shutdown.sh

是因為有時候關不掉),然後重新開機tomcat(使用

startup.sh

)。過程就這麼簡單,實作的過程卻很坎坷。

vi tomcat_restart.sh
chmod +x tomcat_restart.sh
           
  1. java環境,需要在腳本裡聲明,不然

    startup.sh

    啟動不了(報環境錯誤,消耗了4個小時解決)。

    // 查詢目前的tomcat jdk路徑

    shell腳本定時重新開機tomcat
    #!/bin/sh
     # the jdk path
     echo "*****************start**************"
     export JAVA_HOME=/home/jdk/jdk1.8.0_161
               
  2. 擷取tomcat 程序的ID,需要指定需要重新開機的tomcat路徑(系統中會運作多個tomcat)——(耗時四個小時)

    // 有兩種指定tomcat 的路徑

    1. shell 腳本存放位置任意時,變量聲明指定
      # the tomcat path & script path anywhere
       tomcat_path='/home/*/*/tomcat' 
                 
    2. 需将shell腳本存放于tomcat的根目錄下
      # the tomcat path & script path in the root of tomcat
       tomcat_path=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
                 
    ok ,解決掉路徑問題,開始查詢它的程序。
    # check and get the tomcat Pid
     tomcat_id=`ps -ef|grep ${tomcat_path} | grep -v grep | awk '{print $2}'`
               
  3. 開始執行删除、重新開機操作。

    // 删除

    # shutdown tomcat and restart
     if [ ${tomcat_id} = "" ]
     then
      	echo 'no tomcat pid alive'
      else
      	echo "the tomcat's pid is ${tomcat_id} and will kill it "
      	kill -9 ${tomcat_id}
      	tomcat_id=`ps -ef|grep ${tomcat_path} | grep -v grep | awk '{print $2}'`
      	
      	if [ ${tomcat_id} = "" ]
      	then 
      		echo 'killed pid success!'
      	fi
      fi
               
    // 重新開機
    # restart the tomcat 
     # start
     ${tomcat_path}/bin/startup.sh
     # check the tomcat pid is exist
     tomcat_id=`ps -ef|grep ${tomcat_path} | grep -v grep | awk '{print $2}'`
     if test -z ${tomcat_id}
     then
     	echo "the path of ${tomcat_path} restart faild"
     else
     	echo "the path of ${tomcat_path} restart success"
     	echo "the tomcat pid is ${tomcat_id}"
     fi
     echo "************end**************"
               

腳本編寫完畢,可單個測試,執行腳本。

./tomcat_restart.sh
           
  1. 加入定時器、系統定時執行該腳本
    crontab -h           // 檢視crontab的使用
     crontab -l          // 列出目前的定時任務
     crontab -e             // 編譯、添加定時任務
    
     // 格式:
        */5 *  *  *  * cd /home/*/*/ & ./tomcat_restart.sh > /home/*/*/restart.log                      // 每個五分鐘執行一次
               
    說明:

    * * * * *

    表示任何時候 //分 時 日 月 周

    ,

    分割,多個時間點,如1點和4點

    1,4

    -

    分割 ,一段時間範圍内,如1點到四點

    1-4

    /n

    間隔,沒個多少時間,每5分鐘,

    */5

需要注意的是,定時任務中,對于腳本的存放目錄也有要求,

cd /home/*/*

先進入到目錄下,在執行

./tomcat_restart.sh

文中列出的幾個點都是踩過的坑,也查詢了好多資料。

感謝所有資料的網友。

繼續閱讀