本章內容以CentOS 6.4 和 CentOS 7.6 兩個版本爲例。[6和7的命令不一樣]html
步驟:java
【注意文件建立的路徑】linux
【查看當前路徑的命令: pwd】centos
建立文件命令:tomcat
vi tomcat.sh
【注意,標紅部分須要本身修改成本身服務器上的對應地址】bash
【查看linux服務器上JAVA_HOME命令: echo $JAVA_HOME 】服務器
【關鍵一行:app
ps -ef|grep java | grep catalina | awk '{print $2}
能夠準肯定位到當前正在tomcat下啓動運行的java進程,而不是安裝的java,參考地址:https://www.cnblogs.com/sxdcgaq8080/p/10734752.html 】spa
#!/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"
命令:.net
chmod 777 tomcat.sh
命令:
crontab -e
將上面的腳本文件路徑,以及定時任務配置粘貼到配置文件中:
58 10 * * * /backup/tomcat7/tomcat.sh
【本配置說明: 天天10:58分 執行腳本文件,腳本文件路徑在:/backup/tomcat7/tomcat.sh】
【關於定時任務的配置說明,請自行查閱】
【最後要說明的一點:本命令操做與vi操做文本命令同樣】
service crond stop
service crond start
service crond restart
crontab -l
tail -f -n 200 /var/spool/mail/root
查看命令:
ps -ef|grep java
能夠從下圖看到,正在運行的新的java進程是在10:58 啓動的【說明java進程重啓成功】
能夠查詢下面的CentOS 7 使用cron定時任務相關操做。
systemctl is-enabled crond.service
結果展現以下:
enable表示已啓用自啓動 disable標識未啓用自啓動
systemctl enable crond.service
systemctl disable crond.service
[只有cron的狀態是active running的,才表示cron服務是啓動的]
systemctl status crond.service
systemctl start crond.service
systemctl stop crond.service
systemctl restart crond.service
systemctl reload crond.service
crontab -e
編輯內容和centos6 同樣。表示天天7.30 執行 /mnt/apps/tomcat/tomcat.sh 路徑下的腳本
30 07 * * * /mnt/apps/tomcat/tomcat.sh
若是在上面,已經把定時任務cron啓動了,編輯定時任務後,會有提示
crontab -l
crontab -r
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定時任務一直沒有執行。
我這裏出現的緣由,是由於服務器的時區設置不正確。
正確的時區應該是
CST
若是你的時區是
UTC
或者其餘,就致使時間和時區不正確。
我設置的定時任務是17.05執行,結果等到了17.05,定時任務不執行,由於此刻的系統時間是05.05
解決方法:
http://www.javashuo.com/article/p-wljkwztk-dm.html
=================================================
參考地址:
https://blog.csdn.net/abcdad/article/details/69239249
定時啓動開啓後,無效解決方案: