Linux定時任務(cron)


cron介紹

我們經常使用的是crontab命令是cron table的簡寫,它是cron的配置文件,也可以叫它作業列表,我們可以在以下文件夾內找到相關配置文件。

  • /var/spool/cron/ 目錄下存放的是每個用戶包括root的crontab任務,每個任務以創建者的名字命名
  • /etc/crontab 這個文件負責調度各種管理和維護任務。
  • /etc/cron.d/ 這個目錄用來存放任何要執行的crontab文件或腳本。
  • 我們還可以把腳本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目錄中,讓它每小時/天/星期、月執行一次。
crontab的使用
# 常用命令如下
crontab [-u username]    //省略用戶表表示操作當前用戶的crontab
    -e      (編輯工作表)
    -l      (列出工作表里的命令)
    -r      (刪除工作作)

我們用crontab -e進入當前用戶的工作表編輯,是常見的vim界面。每行是一條命令。

crontab的命令構成為 時間+動作,其時間有分、時、日、月、周五種,操作符有

  • * 取值范圍內的所有數字
  • / 每過多少個數字
  • - 從X到Z
  • , 散列數字
crontab的時間編寫實例
00 02 * * * ls          #每天的凌晨2點整執行
00 02 1 * * ls          #每月的1日的凌晨2點整執行
00 02 14 2 * ls         #每年的2月14日凌晨2點執行
00 02 * * 7 ls          #每周天的凌晨2點整執行
00 02 * 6 5 ls          #每年的6月周五凌晨2點執行
00 02 14 * 7 ls         #每月14日或每周日的凌晨2點都執行
00 02 14 2 7 ls         #每年的2月14日或每年2月的周天的凌晨2點執行   
*/10  02 * * * ls       #每天凌晨2點,每隔10分鍾執行一次
* * * * *  ls           #每分鍾都執行
00 00 14 2 *  ls        #每年2月14日的凌晨執行命令 
*/5 * * * *  ls         #每隔5分鍾執行一次
00 02 * 1,5,8 * ls      #每年的1月5月8月凌晨2點執行
00 02 1-8 * *  ls       #每月1號到8號凌晨2點執行
0 21 * * * ls           #每天晚上21:00執行
45 4 1,10,22 * * ls     #每月的1,10,22號的4:45執行
45 4 1-10 * * ls        #每月的1到10號的4:45執行
3,15 8-11 */2 * * ls    #每隔兩天的上午8點到11點的第3和第15分鍾執行
0 23-7/1 * * * ls       #晚上11點到早上7點之間,每隔一個小時執行
15 21 * * 1-5 ls        #周一到周五每天晚上21:15執行
計划任務如何調試
crond調試
  • 調整任務每分鍾執行的頻率, 以便做后續的調試。
  • 如果使用cron運行腳本,請將腳本執行的結果寫入指定日志文件, 觀察日志內容是否正常。
  • 命令使用絕對路徑, 防止無法找到命令導致定時任務執行產生故障。
  • 通過查看/var/log/cron日志,以便檢查我們執行的結果,方便進行調試。
crond編寫思路
  • 動執行命令,然后保留執行成功的結果。
  • 編寫腳本
    • 腳本需要統一路徑/scripts
    • 腳本內容復制執行成功的命令(減少每個環節出錯幾率)
    • 腳本內容盡可能的優化, 使用一些變量或使用簡單的判斷語句
    • 腳本執行的輸出信息可以重定向至其他位置保留或寫入/dev/null
  • 執行腳本
    • 使用bash命令執行, 防止腳本沒有增加執行權限(/usr/bin/bash)可以使用which查看命令的絕對路徑
    • 執行腳本成功后,復制該執行的命令,以便寫入cron
  • 編寫計划任務
    • 加上必要的注釋信息, 人、時間、任務
    • 設定計划任務執行的周期
    • 粘貼執行腳本的命令(不要手敲)
    • 所有命令必須使用絕對路徑(可以使用which進行查看)
  • 調試計划任務
    • 增加任務頻率測試
    • 檢查環境變量問題
    • 檢查crond服務日志 /var/log/cron


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM