本章內容以CentOS 6.4 和 CentOS 7.6 兩個版本為例。[6和7的命令不同]
=====================CentOS 6.4===================
步驟:
一.創建腳本文件,本腳本文件用於停止,重啟tomcat運行的java進程,並設置腳本文件權限
1.新建腳本文件tomcat.sh
【注意文件創建的路徑】
【查看當前路徑的命令: pwd】
創建文件命令:
vi tomcat.sh
2.粘貼腳本文件文本內容到文件中:
【注意,標紅部分需要自己修改為自己服務器上的對應地址】
【查看linux服務器上JAVA_HOME命令: echo $JAVA_HOME 】
【關鍵一行:
ps -ef|grep java | grep catalina | awk '{print $2}
可以准確定位到當前正在tomcat下啟動運行的java進程,而不是安裝的java,參考地址:https://www.cnblogs.com/sxdcgaq8080/p/10734752.html 】
#!/bin/bash . /etc/profile export JAVA_HOME=/usr/local/jdk1.7.0_79 export JRE_HOME=$JAVA_HOME/jre tomcatPath="/backup/tomcat7" binPath="$tomcatPath/bin" echo "[info][$(date +'%F %H:%M:%S')]正在監控tomcat,路徑:$tomcatPath" pid=`ps -ef|grep java | grep catalina | awk '{print $2}'` if [ -n "$pid" ]; then echo "[info][$(date +'%F %H:%M:%S')]正在運行的tomcat進程為:$pid" echo "[info][$(date +'%F %H:%M:%S')]tomcat已經啟動,准備使用shutdown命令關閉..." $binPath"/shutdown.sh" sleep 2 pid=`ps -ef|grep java | grep catalina | awk '{print $2}'` if [ -n "$pid" ]; then echo "[info][$(date +'%F %H:%M:%S')]使用shutdown命令關閉失敗,准備kill進程..." kill -9 $pid echo "[info][$(date +'%F %H:%M:%S')]kill進程完畢!" sleep 1 else echo "[info][$(date +'%F %H:%M:%S')]使用shutdown命令關閉成功!" fi else echo "[info][$(date +'%F %H:%M:%S')]tomcat未啟動!" fi echo "[info][$(date +'%F %H:%M:%S')]准備啟動tomcat..." $binPath"/startup.sh"
3.修改腳本文件tomcat.sh 可操作權限
命令:
chmod 777 tomcat.sh
二.修改定時任務配置,添加本腳本到定時任務配置中,啟動定時任務
1.修改定時任務配置
命令:
crontab -e
將上面的腳本文件路徑,以及定時任務配置粘貼到配置文件中:
58 10 * * * /backup/tomcat7/tomcat.sh
【本配置說明: 每天10:58分 執行腳本文件,腳本文件路徑在:/backup/tomcat7/tomcat.sh】
【關於定時任務的配置說明,請自行查閱】
【最后要說明的一點:本命令操作與vi操作文本命令一樣】
2.操作定時任務
關閉定時任務命令:
service crond stop
啟動定時任務命令:
service crond start
重啟定時任務命令:
service crond restart
查看定時任務列表:
crontab -l
查看定時任務執行日志:
tail -f -n 200 /var/spool/mail/root
3.查看tomcat下運行的java進程是否已經重啟
查看命令:
ps -ef|grep java
可以從下圖看到,正在運行的新的java進程是在10:58 啟動的【說明java進程重啟成功】
CentOS 6 使用cron定時任務,報錯:Redirecting to /bin/systemctl restart crond.service
可以查詢下面的CentOS 7 使用cron定時任務相關操作。
========================CentOS 7.6=======================
一.cron任務的自啟動相關命令
1.檢測cron定時服務是否自啟用
systemctl is-enabled crond.service
結果展示如下:
enable表示已啟用自啟動
disable標識未啟用自啟動
2.如果未啟用,則開啟cron自啟用
systemctl enable crond.service
3.如果已經啟用,想要cron關閉自啟動
systemctl disable crond.service
附錄:
二.cron服務是否啟動相關命令【區別於自啟動】
1.查看cron服務的啟動狀態
[只有cron的狀態是active running的,才表示cron服務是啟動的]
systemctl status crond.service
2.啟動cron服務[命令沒有提示]
systemctl start crond.service
3.停止cron服務[命令沒有提示]
systemctl stop crond.service
4.重啟cron服務[命令沒有提示]
systemctl restart crond.service
5.重新加載cron服務[命令沒有提示]
systemctl reload crond.service
三.操作定時任務
1.定時任務的編輯
crontab -e
編輯內容和centos6 一樣。表示每天7.30 執行 /mnt/apps/tomcat/tomcat.sh 路徑下的腳本
30 07 * * * /mnt/apps/tomcat/tomcat.sh
如果在上面,已經把定時任務cron啟動了,編輯定時任務后,會有提示
2.查看已編輯的定時任務
crontab -l
3.刪除已編輯的所有定時任務
crontab -r
四.查看定時任務的執行日志
1.查看cron執行日志
tail -f -n 200 /var/log/cron
五.最后總結
如上述命令,整個cron操作步驟如下
1>編輯了.sh腳本,並保存,記錄.sh文件所在路徑【一定確保.sh腳本可用,可以嘗試在編輯完成.sh文件后,直接./tomcat.sh 執行腳本文件,查看是否可以正常執行】
2>查看並設置cron為自啟動
3>查看並啟動cron服務,使狀態為running
4>編輯並查看cron服務,注意路徑和定時格式,確保cron服務編輯成功
5>最后在編輯完成cron服務后,重新加載或重啟cron服務,確保cron服務狀態是running的
6>最后可以通過查看cron執行日志,確保cron是否執行
7>如果cron任務不執行,確保linux服務器系統 時間 和時區 是否正常
六.cron任務不執行,問題排查
如上,已經確保 第五點中所有 步驟都正確執行了。但是cron定時任務一直沒有執行。
我這里出現的原因,是因為服務器的時區設置不正確。
正確的時區應該是
CST
如果你的時區是
UTC
或者其他,就導致時間和時區不正確。
我設置的定時任務是17.05執行,結果等到了17.05,定時任務不執行,因為此刻的系統時間是05.05
解決方法:
https://www.cnblogs.com/sxdcgaq8080/p/11155232.html
=================================================
參考地址:
https://blog.csdn.net/abcdad/article/details/69239249
定時啟動開啟后,無效解決方案:
https://blog.csdn.net/zxc_user/article/details/82634370