Linux 查看或設置定時任務

Linux 查看所有定時任務

crontab 命令選項基本只對用戶操作的選項:
-u 指定一個用戶
-l 列出某個用戶的任務計劃
-r 刪除某個用戶的任務
-e 編輯某個用戶的任務
所以,要查看所有用戶的,只能根據 /etc/passwd 文件中的用戶名一一列舉了,可以用腳本。

本章內容以CentOS 6.4   和   CentOS  7.6  兩個版本定時重啓Tomcat爲例。[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

 

附錄:

linux系統自帶服務的啓動文件和狀態

 

二.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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章