CentOS crontab 定時任務不執行的常見解決方法
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# .—————- minute (0 – 59)
# | .————- hour (0 – 23)
# | | .———- day of month (1 – 31)
# | | | .——- month (1 – 12) OR jan,feb,mar,apr …
# | | | | .—- day of week (0 – 6) (Sunday=0 or 7) OR
#sun,mon,tue,wed,thu,fri,sat
# | | | | |
#
# * * * * * command will be executed
例如:
*/5 * * * * root /usr/libexec/atrun
minute(m) : 代表一小時內的第幾分,範圍 0-59。
hour (h) : 代表一天中的第幾小時,範圍 0-23。
mday (dom) : 代表一個月中的第幾天,範圍 1-31。
month(mon) : 代表一年中第幾個月,範圍 1-12。
wday (dow) : 代表星期幾,範圍 0-7 (0及7都是星期天)。
who :
command(command):所要執行的指令。
crond 開機啟動
crond 啟動/關閉指令碼
/etc/init.d/crond help
Usage: /etc/init.d/crond {start|stop|status|restart|condrestart|try-restart|reload|force-reload}
crond 加入到開機啟動
chkconfig --level 2345 crond on
crontab定時任務不執行問題
排查原因步驟如下:
首先,確認伺服器是否開啟定時任務計劃服務,只有root使用者才能對crond服務進行開啟和關閉
[[email protected] script]# service crond status
crond is stopped
[[email protected] script]# service crond start
Starting crond: [ OK ]
[[email protected] script]# service crond status
crond (pid 24577) is running…
請確保crond狀態為 is running…
如果crond狀態為 crond is stopped ,則定時任務服務不會生效故無法執行,我遇到的crontab不執行就是這個原因
crontab 常見錯誤的幾個問題
編輯 crontab :
crontab -e
(指定bash是非常有效的解決方式,我今天碰到這個問題,死活執行不起來,後臺除錯過程中添加了這一句就解決了)
# minute hour day month week command
SHELL=/bin/bash
30 * * * * cd /home/barry/top800/top10/top10_fruits/ && ./top10_all.sh
Ctrl + O (寫入)——》 Enter鍵(儲存檔名)——》 Ctrl + X(退出)
輸入檢視命令:
crontab -l
# m h dom mon dow command
SHELL=/bin/bash
30 * * * * cd /home/barry/top800/top10/top10_fruits/ && ./top10_all.sh(推薦用此方式)
如果遇到shell語法錯誤
解決方法:
需指定shell直譯器命令:SHELL=/bin/bash(請參見上面 crontab編輯示例 SHELL=/bin/bash)
如果遇到路徑錯誤
在 /var/spool/crontab/yanggang 中,添加了如下命令,在日誌檔案 /var/spool/mail/yanggang 中提示找不到 xxx.sh 路徑
30 * * * * /home/barry/top800/top10/top10_fruits/top10_all.sh
或
30 * * * * bash /home/barry/top800/top10/top10_fruits/top10_all.sh
這是因為你在crontab中使用了絕對路徑執行指令碼 top10_all.sh,因此在指令碼 top10_all.sh 中引用的其它指令碼也都需要使用絕對路徑,才能被crontab找到並執行。
那麼該如何避免絕對路徑呢,推薦採用如下格式:
30 * * * * cd /home/barry/top800/top10/top10_fruits/ && ./top10_all.sh(推薦用此方式)
先進入該目錄,然後在執行指令碼;否則,執行指令碼中的其它指令碼都需要加絕對路徑
一些示例:
00 8,12,16 * * * /data/app/scripts/monitor/df.sh
30 2 * * * /data/app/scripts/hotbackup/hot_database_backup.sh
10 8,12,16 * * * /data/app/scripts/monitor/check_ind_unusable.sh
10 8,12,16 * * * /data/app/scripts/monitor/check_maxfilesize.sh
10 8,12,16 * * * /data/app/scripts/monitor/check_objectsize.sh
43 21 * * * 21:43 執行
15 05 * * * 05:15 執行
0 17 * * * 17:00 執行
0 17 * * 1 每週一的 17:00 執行
0,10 17 * * 0,2,3 每週日,週二,週三的 17:00和 17:10 執行
0-10 17 1 * * 毎月1日從 17:00到7:10 毎隔1分鐘 執行
0 0 1,15 * 1 毎月1日和 15日和 一日的 0:00 執行
42 4 1 * * 毎月1日的 4:42分 執行
0 21 * * 1-6 週一到週六 21:00 執行
0,10,20,30,40,50 * * * * 每隔10分 執行
*/10 * * * * 每隔10分 執行
* 1 * * * 從1:0到1:59 每隔1分鐘 執行
0 1 * * * 1:00 執行
0 */1 * * * 毎時0分 每隔1小時 執行
0 * * * * 毎時0分 每隔1小時 執行
2 8-20/3 * * *8:02,11:02,14:02,17:02,20:02 執行
30 5 1,15 * * 1日 和 15日的 5:30 執行
2.3 & 後臺執行命令
當在前臺執行某個作業時,終端被該作業佔據;而在後臺執行作業時,它不會佔據終端。可以使用&命令把作業放到後臺執行。
如:
30 2 * * * /data/app/scripts/hotbackup/hot_database_backup.sh &
在後臺執行作業時要當心:需要使用者互動的命令不要放在後臺執行,因為這樣你的機器就會在那裡傻等。
不過,作業在後臺執行一樣會將結果輸出到螢幕上,干擾你的工作。如果放在後臺執行的作業會產生大量的輸出,最好使用下面的方法把它的輸出重定向到某個檔案中:
如:
command >out.file 2>&1 &
在這個例子中,2>&1表示所有的標準輸出和錯誤輸出都將被重定向到一個叫做out.file 的檔案中。
crontab不執行的原因解析
Posted by 破冰 on 2013-8-25 13:40 Sunday1.Cron的啟動與關閉
由於Cron是Linux的內建服務,可以用以下的方法啟動.關閉這個服務:
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
2.Cron配置檔案
2.1全域性配置檔案
crontab在/etc目錄下面存在cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d五個目錄和crontab,cron.deny二個檔案.
cron.daily是每天執行一次的job,cron.weekly是每個星期執行一次的job.cron.monthly是每月執行一次的job,cron.hourly是每個小時執行一次的job.cron.d是系統自動定期需要做的任務,但是又不是按小時,按天,按星期,按月來執行的,那麼就放在這個目錄下面.
/etc/crontab檔案一般如下:
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
我們可在此檔案中新增自己需要的cron job.
/etc/cron.deny檔案就是用於控制不讓哪些使用者使用Crontab的功能.
2.2使用者配置檔案
每個使用者都有自己的cron配置檔案,通過crontab -e 就可以編輯,一般情況下我們編輯好使用者的cron配置檔案儲存退出後,系統會自動就存放於/var/spool/cron/目錄中,檔案以使用者名稱命名.
linux的cron服務是每隔一分鐘去讀取一次/var/spool/cron,/etc/crontab,/etc/cron.d下面所有的內容.
3.Cron命令格式
crontab [ -u user ] 檔案
crontab [ -u user ] { -l | -r | -e }
-u:指定某一使用者
-e:執行文字編輯器來設定使用者(當前使用者或指定使用者)時程表,內定的文字編輯器是vi.
-r:刪除使用者時程表.
-l:列出使用者時程表.
4.Cron檔案格式
* * * * * command
分 時 日 月 周 命令
第1列表示分鐘1~59, 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要執行的命令
5.Cron檔案使用說明
5.1 一般情況
當f1 為 * 時表示每分鐘都要執行 program,f2 為 * 時表示每小時都要執行程式,其餘類推.
* * * * * /bin/usershell 每天每分鐘執行一次/bin/usershell
當f1 為 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間內要執行,f2 為 a-b 時表示從第 a 到第 b 小時都要執行,其餘類推.
0-12 * * * * /bin/usershell 每天每小時從0到12分鐘每分鐘執行一次/bin/usershell
當f1 為 */n 時表示每 n 分鐘個時間間隔執行一次,f2 為 */n 表示每 n 小時個時間間隔執行一次,其餘類推.
* */2 * * * /bin/usershell 每天每2小時執行一次/bin/usershell
當f1 為 a, b, c,... 時表示第 a, b, c,... 分鐘要執行,f2 為 a, b, c,... 時表示第 a, b, c...個小時要執行,其餘類推.
* 1,3,5,7 * * * /bin/usershell 每天每逢1,3,4,7點執行一次/bin/usershell
5.2. 衝突邏輯
日期可以用月限定,也可以用“星期”指定,如果兩個段有衝突,那麼,第六段的命令將在匹配任何一個的情況下都執行,比如
"30 4 1,15 * 5",將在每月的1號和15號加每個週五,上午4:30執行.
5.3. 符號"%"
"%"在Cron檔案中,有"結束命令列","換行","重定向"的作用,假如不需要"%"的特殊作用,需要使用轉義符轉義.
5.4. @reboot
這個不需要理解,為了達到在開機後執行,且只執行一次的目的.除了這個,也無法通過前五段的設定來實現.
@annually也是這個功能.
至於@yearly,@monthly等等其實都可以用上面的五段來設定.
相關推薦
CentOS crontab定時任務不執行的解決
crontab 配置檔案 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # .—————- minute (0 – 59) # | .————- hour (0 – 23)
CentOS crontab 定時任務不執行的常見解決方法
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # .—————- minute (0 – 59) # | .————- hour (0 – 23) # | | .———- day of month (1
crontab定時任務不執行的解決辦法
1、檢視crontab執行記錄如果出現了crontab定時任務不執行的情況,首先需要定位問題,那麼就需要通過日誌來確定問題所在。crontab的日誌位置一般位於/var/log/cron,利用下面的語句即可檢視日誌。1 tail -f /var/log/cron上面的/var
crontab定時任務不執行,並且沒有收到錯誤資訊郵件
現象: crontab中定義的msqldump定時任務不能執行,沒有收到錯誤資訊郵件,檢視日誌/var/log/cron顯示如下 CROND[15777]: (root) MAIL (mai
crontab定時任務不執行
今天在Liunx系統裡面寫了一個定時重啟tomcat的.sh指令碼檔案,單獨執行這個.sh檔案可以正常執行,但是加入到Liunx的定時任務crontab裡面發現根本就不執行,於是就逐步排查問題? 1、
crontab定時任務不執行的原因
我在網上找的時候發現網上主要說了這5個原因: 1 crond服務未啟動 crontab不是Linux核心的功能,而是依賴一個crond服務,這個服務可以啟動當然也可以停止。如果停止了就無法執行任何定時任務了,解決的方法是開啟它: crond 或 service
Spring定時任務不執行的解決
本以為spring定時任務挺簡單的,後來發現單純的進行檔案的配置有的時候定時任務並沒有執行,這是什麼原因呢? 通過看spring指導文件上的講解,以及通過對文件的理解做了一個Demo看一下,再說明這個
crontab定時任務不執行,單獨執行sh生效
在網上找了一個定時重啟tomcat的指令碼,自己手動執行是可以的,但就是加入crontab後不執行。 重啟指令碼如下 restart_tomcat.sh #!/bin/bash tomcat_home=/usr/local/tomcat8 SHUTDO
查詢日誌報錯Spoon is not supported on this hosttype解決(crontab定時任務未執行解決)
背景:kettle換目標庫後,手動執行命令可以入庫,crontab定時任務未執行,查錯記錄: ①先看了定時任務crontab配置 結果沒問題; ②重啟了crontab定時任務 service crond restart 也沒用 ③查看了配置檔案及資源庫路徑
解決ubuntu下定時任務不執行問題
1、首先建立一個定時任務:每分鐘向螢幕輸出"Hello world!"。 有兩種實現方式: 1)輸入crontab -e命令,根據提示直接在當前cron task文字最後面插入如下命令(記得回車): * * * * * echo "Hello world!" 2)由於每個使
CentOS Crontab(定時任務)
status stat ntsysv 設置 backup pda 啟動服務 brush 分鐘 安裝crontab: yum install crontabs 說明: service crond start //啟動服務 service crond stop //關閉服務 s
linux crontab定時任務未執行
在遇到這次問題之前,我已經多次使用了定時任務,這次也正常設定了定時任務,但是死活發現定時任務沒有執行。 crontab設定如下: bg_action_report.sh內容如下: #!/bin/sh #date=`date +%Y%m%d` #filePath
Linux普通使用者設定Crontab定時任務並執行(親測有效)
Crontab命令及用法我這裡就不多做解釋了,直接從設定Crontab開始。**在root使用者下執行**1.安裝crontab:使用命令:yum install crontabs**在普通使用者下執行
shell指令碼手動執行成功,定時任務呼叫失敗的解決方法。
場景:寫的shell指令碼,在secureCRT 命令視窗執行沒有問題,當新增定時任務執行shell指令碼時出現如下中的某些問題。1,出現找不著 命令如:java、db2等命令。 2,編碼格式不對等,如java讀取中文文字 讀取後為問號? 。 原因:使用者的環境變數在she
關於ThinkJs 的Crontab定時任務無法執行的問題
在這個問題上糾結了老半天,同樣的Action方法,我放在這個Controller中無法執行,放在另一個Controller中卻可以,甚至我複製這個可行的Controller重新命名都不行,莫非建立Controller需要在哪個檔案中宣告?在群裡問了也不需要。最後的最後,經技術負責人點撥,是許
ubuntu開啟crontab日誌及不執行常見原因
crontab不執行常見原因 1,先排查你要執行的指令碼是否正常執行,驗證方法就是在控制檯輸入你要執行的指令碼命令,看是否能執行,但是即使有時能正常執行,也不一定說指令碼就沒問題。今天我就遇到了一個很奇怪的現象,我的指令碼命令沒使用全路徑,在控制檯是可以正常執行,但是cro
叢集伺服器定時任務重複執行的解決方案
伺服器採用了負載均衡,有兩臺伺服器,部署的程式碼一樣,所以裡面的定時任務在某一時間會被同時執行,這就導致了很多其他意外的發生,想要解決的問題基本就三個:單點執行,故障轉移,服務狀態。這裡對比一下網上找的幾種方案,: (1)只在一臺伺服器上部署該定時任務程式碼。 優點:解決
linux定時任務不執行的問題
1、如果定時任務出錯,會有郵件傳送:less /var/spool/mail/akazam看了郵件基本可以解決大部分問題2、定時任務執行jar的時候會存在找不到Java的問題export JAVA_HOME=/home/akazam/app/jdk1.8.0_131expor
KindEditor.ready 不執行的解決方法
問題描述 按照官網的要求,一一都設定好了,但就是沒法顯示富文字編輯器。 1.設定好textarea輸入框 <textarea id="myEditor" name="content" style="width:700px;height:300px;"> <strong&
iOS 關於preferredStatusBarStyle不執行的解決方法
如果你使用了系統的UINavigationController,且它的navigationBar沒有被隱藏的話,它的rootController及之後push的controller的preferredStatusBarStyle方法不會被呼叫(其他兩個方法還是會被呼叫);U