Linux/Window之定時任務腳本編寫


Windows(Win 10)

compmgmt.msc[Win+R] > 任務計划程序 > 任務計划程序庫 > 創建基本任務

Linux(Ubuntu)

定時任務種類

實現linux定時任務主要可以通過cron、anacron、at三種,而使用最多的是cron任務。

CRON定時任務軟件

概念

  1. [詞義]cron一詞來源於希臘語chronos(χρόνος),原意特指:時間。
  2. [功能]常見於Unix和類Unix的操作系統之中,通常被內置於操作系統中。用於設置周期性被執行的指令。該命令從標准輸入設備讀取指令,並將其存放於“crontab”文件中,以供之后讀取和執行。通常,crontab儲存的指令被守護進程激活,crond常常在后台運行,每一分鍾檢查是否有預定的作業需要執行。這類作業一般稱為cron jobs。
  3. [Shell服務]cron服務提供cron、crontab命令(crontab,即 cron table之縮寫)來設定cron服務。
  4. [推薦:絕對路徑]腳本中推薦使用絕對路徑,無論是shell腳本還是python腳本,里面所有的路徑最好都是絕對路徑!!!形如:echo "hello world" >> /root/jack/cron/sh-log.txt
  5. [辨析]cron是服務名稱,crond是后台進程,crontab則是定制好的計划任務表

cron安裝與使用

  • 安裝與查看
shell> sudo apt-get install cron #安裝,Ubuntu等Linux系統默認會按照cron服務
shell> sudo  service cron status # 查看cron狀態
  • 創建定時任務
cmd shell> crontab -e
edited file> # minute hour day-of-month month day-of-week commands
edited file> */1 * * * * echo "Have a break now." >> /tmp/test.txt   # 每隔1分鍾,執行bash shell命令"echo "Have a break now." >> /tmp/test.txt"
edited file> 3,15 * * * * command   # 每小時的第3和第15分鍾執行command
edited file> 3,15 8-11 * * * command  # 在每天上午8點到11點的第3和第15分鍾執行command
edited file> 6,10 * 2 * *  # 每個月2號,每小時的6分和10分執行一次任務
edited file> */3,*/5 * * * *   # 每隔3分鍾或5分鍾執行一次任務,比如10:03,10:05,10:06
  • 啟動/重啟
shell> sudo service cron start # 啟動
shell> sudo /etc/init.d/cron start # 啟動
shell> sudo service cron restart  # 重啟
shell> sudo /etc/init.d/cron restart # 重啟
  • 重新載入配置
shell> sudo service cron reload
  • 關閉
shell> sudo service cron stop
  • crontab命令
    • -u //設定某用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數
    • -l //顯示某用戶cron服務的配置信息 
    • -r //刪除某用戶的cron服務
    • -e //編輯某用戶的cron服務的配置信息
    • -ir //刪除 crontab 文件前提醒用戶
crontab -u root -l  ## 用戶(root)查看自己的cron服務配置信息

crontab任務配置基本格式

crontab中的每一行代表一個定期執行的任務,分為6個部分。前5個部分表示何時執行命令,最后一個部分表示執行的shell命令。

edited file> # minute hour day-of-month month day-of-week commands
edited file>    *   *  *  *  *  command

其各項字段對應的合法值:00-59 00-23 01-31 01-12 0-6 (0 is sunday)

附加說明:操作符號 + 逗號(',')分開的值,例如:“1,3,4,7,8”。表示任意值,比如:在小時部分填寫 * 代表任意小時(每小時) + 連詞符('-')指定值的范圍,例如:“1-6”,意思等同於“1,2,3,4,5,6”。可以允許在一個部分中填寫多個值,比如:在分鍾部分填寫 1,3 表示一分鍾或三分鍾 + 星號('*')代表任何可能的值。形如,在“小時域”里的星號等於是“每一個小時”,等等。一般配合 * 使用,代表每隔多長時間,比如:在小時部分填寫 */2 代表每隔兩分鍾。所以 */1 和 * 沒有區別 */2 可以看成是能被2整除的任意值。

參考文獻


免責聲明!

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



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