CentOS crontab定時任務不執行的解決

2021-07-07 03:07:41 字數 2862 閱讀 3544

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 

# |  |  |  |  |

# m h dom mon dow command

# *  *  *  *  *  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                    :   要使用什麼身份執行該指令,當您使用 crontab -e 時,不必加此字段。 

command

(command

):所要執行的指令。 

crond 開機啟動

crond 啟動/關閉指令碼

/etc/init.d/crond help

usage: /etc/init.d/crond

crond 加入到開機啟動

chkconfig crond on

crontab定時任務不執行問題

排查原因步驟如下:

首先,確認伺服器是否開啟定時任務計畫服務,只有root使用者才能對crond服務進行開啟和關閉

[root@mimvp-bj script]# 

service crond status

crond is stopped

[root@mimvp-bj script]# 

service crond start

starting crond:                                            [  ok  ]

[root@mimvp-bj script]# 

service crond status

crond (pid  24577) 

is running…

請確保crond狀態為 

is running… 

如果crond狀態為 crond is stopped ,則定時任務服務不會生效故無法執行,我遇到的crontab不執行就是這個原因

crontab 常見錯誤的幾個問題

編輯 crontab :

crontab -e

# m h  dom mon dow   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語法錯誤

syntax

error

:"("

unexpected

解決方法:

需指定shell直譯器命令:

shell=/bin/bash(請參見上面 crontab編輯示例

shell=/bin/bash)

或者參見: linux – bash syntax error

如果遇到路徑錯誤

在 /var/spool/crontab/yanggang 中,新增了如下命令,在日誌檔案 /var/spool/mail/yanggang 中提示找不到 ***.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

(推薦用此方式)

先進入該目錄,然後在執行指令碼;否則,執行指令碼中的其它指令碼都需要加絕對路徑

原文:

CentOS Crontab 定時任務

安裝crontab yum install crontabs說明 service crond start 啟動服務 service crond stop 關閉服務 service crond restart 重啟服務 service crond reload 重新載入配置 檢視crontab服務狀態...

CentOS Crontab 定時任務

安裝crontab yum install crontabs說明 service crond start 啟動服務 service crond stop 關閉服務 service crond restart 重啟服務 service crond reload 重新載入配置 檢視crontab服務狀態...

centos crontab 定時任務用法

一 安裝crond服務 yum y update yum y install cronie yum cron 二 crontab任務語法 crontab任務配置基本格式 command 第1列表示分鐘0 59 每分鐘用 或者 1 表示 第2列表示小時0 23 0表示0點 第3列表示日期1 31 第4...