在Linux環境下,要實現當Tomcat掛掉后自動重啟,可以通過編寫Shell腳本結合cron定時任務或者使用系統守護進程(如Systemd、Upstart或SysVinit)來完成。
使用Shell腳本和cron定時任務
編寫檢查并重啟Tomcat的Shell腳本:首先,你需要創建一個Shell腳本來檢測Tomcat進程是否運行,并在未運行時重啟它。
#!/bin/bash
# 檢查Tomcat進程是否在運行
tomcat_pid=$(pgrep -f "catalina.jar")
if [ -z "$tomcat_pid" ]; thenecho "$(date) - Tomcat is not running, starting it..."# 進程未找到,啟動Tomcatcd /your/tomcat/install/path/bin/./startup.sh
elseecho "$(date) - Tomcat is running with PID: $tomcat_pid"
fi
保存此腳本為check_and_restart_tomcat.sh,并給予執行權限:
chmod +x check_and_restart_tomcat.sh
設置cron定時任務:使用crontab編輯器設置定時任務,例如每5分鐘檢查一次Tomcat狀態。
crontab -e
在文件末尾添加:
*/5 * * * * /path/to/check_and_restart_tomcat.sh
測試的時候 腳本運行報錯line 10: syntax error: unexpected end of file,后面排查是文件格式問題。由于.sh文件的格式為dos格式。而linux只能執行格式為unix格式的腳本。因為在dos/window下按一次回車鍵實際上輸入的是“回車(CR)”和“換行(LF)”,而Linux/unix下按一次回車鍵只輸入“換行(LF)”,所以修改的sh文件在每行都會多了一個CR,所以Linux下運行時就會報錯找不到命令。
查看該腳本文件的格式,方法是使用命令:vi check_and_restart_tomcat.sh進入編輯文件界面
直接輸入shift+:?然后在":"之后輸入"set ff",回車即可看到腳本格式
我們需要把格式改為unix,方法是輸入":set ff=unix",也可以輸入":set fileformat=unix"