--測試通過
vim restart_tomcat.sh
#!/bin/bash
# Filename: restart_tomcat.sh
# Description: Restart tomcat
# Date: 2017-02-06
# Author: songwj
# Version: v1.0
export LANG=zh_CN.UTF-8
export JAVA_HOME=/usr/java/jdk1.7.0_79
export JRE_HOME=$JAVA_HOME/jre
export CATALINA_BASE=/usr/local/apache-tomcat-7.0.79
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$CATALINA_BASE/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
echo "[$(date +'%F %T')] >>> Tomcat begin to restart."
$CATALINA_BASE/bin/shutdown.sh
# Kill all remaining processes
pidList=$(ps aux | grep $CATALINA_BASE | grep -v grep | awk '{print $2}')
for pid in $pidList; do
kill -9 $pid
echo "[$(date +'%F %T')] >>> Kill the process [$pid] successfully."
done
$CATALINA_BASE/bin/startup.sh
echo "[$(date +'%F %T')] >>> Tomcat restart complete."
注意:直接使用tomcat中的shutdown.sh命令關閉tomcat服務時,往往無法正常關閉所有服務,會有殘留進程沒有正常關閉,久而久之,殘留進程會侵占越來越多的系統資源,甚至重啟后都無法正常訪問項目,所以每次在執行完shutdown.sh命令后,需殺死殘留進程,然后再重啟服務,這點非常重要。
1. 問題:手動調用Shell重啟腳本項目運行正常,但使用crontab定時調用時項目重啟訪問出現中文亂碼?
解決方法:因為crontab調用腳本的運行環境和直接手動調用腳本的運行環境不同,所以在腳本中需指明所調用的環境,而且所調用的環境盡量寫成絕對路徑,避免出現不必要麻煩。此處使用crontab重啟出現亂碼,可以查看下正常環境中所使用的編碼環境,經查為zh_CN.UTF-8,則在腳本中明確聲明export LANG=zh_CN.UTF-8即可。
------------------------------------------------------------------------------
--測試通過
#!/bin/bash
#Filename:restart_tomcat.sh
# Description: Restart tomcat
# Date: 2017-02-06
# Author: songwj
# Version: v1.0
export LANG=zh_CN.UTF-8
export JAVA_HOME=/java/jdk1.8.0_91
export JRE_HOME=$JAVA_HOME/jre
export CATALINA_BASE=/java/apache-tomcat-9.0.24
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$CATALINA_BASE/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
echo "[$(date +'%F %T')] >>> Tomcat begin to restart."
$CATALINA_BASE/bin/shutdown.sh
# Kill all remaining processes
pidList=$(ps aux | grep $CATALINA_BASE | grep -v grep | awk '{print $2}')
for pid in $pidList; do
kill -9 $pid
echo "[$(date +'%F %T')] >>> Kill the process [$pid] successfully."
done
$CATALINA_BASE/bin/startup.sh
echo "[$(date +'%F %T')] >>> Tomcat restart complete."
-----------------------------------------------------------------------------
https://blog.csdn.net/hpf247/article/details/79190600
在Linux系統下運行.sh文件有兩種方法,比如我在root目錄下有個datelog.sh文件
第一種(這種辦法需要用chmod使得文件具備執行條件(x): chmod u+x datelog.sh):
1、在任何路徑下,輸入該文件的絕對路徑/root/datelog.sh就可執行該文件(當然要在權限允許情況下)
2、cd到datelog.sh文件的目錄下,然后執行./datelog.sh
第二種(這種辦法不需要文件具備可執行的權限也可運行):
1、在該文件路徑下sh加上文件名字即可,sh datelog.sh
2、在任意路徑下,sh 加上文件路徑及文件名稱:sh /root/ datelog.sh
————————————————
版權聲明:本文為CSDN博主「鶴影隨行」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/hpf247/java/article/details/79190600
