手把手教你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):所要執行的指令。
/etc/init.d/crond help Usage: /etc/init.d/crond {start|stop|status|restart|condrestart|try-restart|reload|force-reload}
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 -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(推薦用此方式)
Syntax error: "(" unexpected
解決方法:
需指定shell直譯器 :SHELL=/bin/bash(請參見上面 crontab編輯示例 SHELL=/bin/bash)
或者參見: LINUX – BASH Syntax Error
在 /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(推薦用此方式)
先進入該目錄,然後在執行指令碼;否則,執行指令碼中的其它指令碼都需要加絕對路徑
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2927878/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 記一次網路故障排障
- 一文詳解 Linux Crontab 排程任務Linux
- 手把手教你寫VueRouterVue
- SRE 必備利器:域名 DNS 探測排障工具DNS
- 手把手教你彙編 Debug
- 手把手教你玩轉GitGit
- 手把手教你畫流程圖流程圖
- SRE 排障利器,介面請求超時試試 httpstatHTTP
- 手把手教你做測開
- 手把手教你寫設計方案
- 手把手教你搭建 Ceph+JuiceFSUI
- 手把手教你使用 Spring Cloud GatewaySpringCloudGateway
- 手把手教你搭建部落格
- 手把手教你AspNetCore WebApi:入門NetCoreWebAPI
- 手把手教你接入微信支付
- 手把手教你SpringBoot整合Elasticsearch(ES)Spring BootElasticsearch
- 手把手教你搭建mongodb副本集MongoDB
- 手把手教你安裝Faiss(Linux)AILinux
- 手把手教你編譯Flutter engine編譯Flutter
- 手把手教你玩轉谷歌TensorFlow谷歌
- 手把手教你搭建Docker Registry私服Docker
- 手把手教你實現boost::bind
- flannel vxlan工作基本原理及常見排障方法
- 手把手教你搭建OpenDRIVE道路模型(下)模型
- 手把手教你搭建OpenDRIVE道路模型(上)模型
- 手把手教你快速搭建React元件庫React元件
- 手把手教你寫一個SpringMVC框架SpringMVC框架
- [手把手教你] 1分鐘搭建Hyperf
- 手把手教你“開發GTA6”
- 手把手教你認識OPTIMIZER_TRACE
- 手把手教你NLTK WordNet使用方法
- 手把手教你AspNetCore WebApi:Serilog(日誌)NetCoreWebAPI
- 手把手教你使用 Prometheus 監控 JVMPrometheusJVM
- 手把手教你畫圓錐漸變
- 手把手教你 Socket 通訊(TCP/IP)TCP
- 手把手教你搭建SSH框架(Eclipse版)框架Eclipse
- 手把手教你學Vue-3(路由)Vue路由
- 手把手教你如何破解付費MacAppMacAPP