設置定時執行任務


  本篇主要介紹如何在Linux和Windows上分別創建定時執行任務。

Linux篇

  Linux下創建定時執行任務可使用crontab,系統默認自帶crontab,在Ubuntu 16.04下進行演示說明。

0.前述

  用戶所建立的crontab文件中,每一行都代表一項任務,每行的每個字段代表一項設置,它的格式共分為六個字段,前五段是時間設定段,第六段是要執行的命令段,格式如下:
  minute hour day month week command

  其中:
    minute: 表示分鍾,可以是從0到59之間的任何整數。
    hour:表示小時,可以是從0到23之間的任何整數。
    day:表示日期,可以是從1到31之間的任何整數。
    month:表示月份,可以是從1到12之間的任何整數。
    week:表示星期幾,可以是從0到7之間的任何整數,這里的0或7代表星期日。
    command:要執行的命令,可以是系統命令,也可以是自己編寫的腳本文件。

 

   一些范例:

30 21 * * * /etc/init.d/nginx restart             //每晚的21:30重啟 nginx。
45 4 1,10,22 * * /etc/init.d/nginx restart        //每月1、 10、22日的4 : 45重啟nginx。
10 1 * * 6,0 /etc/init.d/nginx restart            //每周六、周日的1 : 10重啟nginx。
0,30 18-23 * * * /etc/init.d/nginx restart        //每天18 : 00至23 : 00之間每隔30分鍾重啟nginx。
0 23 * * 6 /etc/init.d/nginx restart              //每星期六的11 : 00 pm重啟nginx。
* */1 * * * /etc/init.d/nginx restart             //每一小時重啟nginx
* 23-7/1 * * * /etc/init.d/nginx restart          //晚上11點到早上7點之間,每 隔一小時重啟nginx
0 11 4 * mon-wed /etc/init.d/nginx restart        //每月的4號與每周一到周三 的11點重啟nginx
0 4 1 jan * /etc/init.d/nginx restart             //一月一號的4點重啟nginx
*/30 * * * * /usr/sbin/ntpdate 210.72.145.20      //每半小時同步一下時間

1.crontab 基本使用

#/etc/init.d/cron status        # 查看狀態
#/etc/init.d/cron start         # 啟動crontab服務
#/etc/init.d/cron stop          # 停止crontab服務
#/etc/init.d/cron reload        # 重載定時任務
#crontab -l                     # 查看定時任務列表

2.開啟日志

  需修改配置文件。

#sudo vim /etc/rsyslog.d/50-default.conf
...
cron.* /var/log/cron.log                             #將cron前面的注釋符去掉
...

  重啟rsyslog:

#sudo service rsyslog restart

3.設置定時執行任務

  本次演示定時執行自己寫的一個Python腳本,bash腳本或其它的應該也是類似。需要注意的是,最好指定腳本的絕對路徑,如果發現仍無法解決,可先切換到腳本路徑下執行。不過,應該是OK的。

  ...
  0 0 * * * python /home/kdv/Desktop/sync-opensource/sync.py    # 每天定時執行腳本
  or
  @daily cd /home/kdv/Desktop/sync-opensource;python /home/kdv/Desktop/sync-opensource/sync.py 0 0 1 * mon python /home/kdv/Desktop/sync-opensource/sync.py   # 每周定時執行腳本
  or
  @weekly cd /home/kdv/Desktop/sync-opensource;python /home/kdv/Desktop/sync-opensource/sync.py

  按需要設置每天or每周定時執行,更多請參考鏈接中的內容。

  設置好任務之后,我們可以查看下任務列表,並需要重載任務。

#crontab -l                   # 可以查看我們添加的任務
#/etc/init.d/cron reload      # 重載定時任務
#vim /var/log/cron.log        # 查看定時任務產生的日志

4.測試

  圖中是每5分鍾執行腳本為例進行測試。

  左側:腳本在運行過程中,會生成以當前時間命名的日志文件,記錄腳本在執行過程中的輸出結果。

  右側:crontab的日志文件,可以看到,每5分鍾,會定時執行一次腳本。

 Windows篇

   Windows系統沒有crontab命令,但是Windows系統有跟crontab命令比較接近的命令:schtasks 命令。在Win10上操作。

1.幫助文檔

  使用如下命令查看schtasks的幫助文檔,以便更多的了解該命令。

C:\Users\Administrator>schtasks /?
SCHTASKS /parameter [arguments]
描述:
    允許管理員創建、刪除、查詢、更改、運行和中止本地或遠程系統上的計划任
    務。
參數列表:
    /Create         創建新計划任務。
    /Delete         刪除計划任務。
    /Query          顯示所有計划任務。
    /Change         更改計划任務屬性。
    /Run            按需運行計划任務。
    /End            中止當前正在運行的計划任務。
    /ShowSid        顯示與計划的任務名稱相應的安全標識符。
    /?              顯示此幫助消息。
Examples:
    SCHTASKS
    SCHTASKS /?
    SCHTASKS /Run /?
    SCHTASKS /End /?
    SCHTASKS /Create /?
    SCHTASKS /Delete /?
    SCHTASKS /Query  /?
    SCHTASKS /Change /?
    SCHTASKS /ShowSid /?

  我們可以創建、查詢、更改和刪除任務等,如果對相應的子命令不熟悉的話,如創建命令,可使用SCHTASKS /Create /? 來進一步查看詳細的說明介紹。

2.查看系統默認任務

  使用schtasks 命令,或帶query參數,schtasks /query查詢系統當前執行任務。

C:\Users\Administrator>schtasks

文件夾: \
任務名                                   下次運行時間           模式
======================================== ====================== ===============
Adobe Acrobat Update Task                2019/9/2 11:00:00      就緒
SogouImeMgr                              N/A                    就緒
sync-opensource                          2019/9/2 11:30:00      就緒
WpsUpdateTask_Administrator              2019/9/2 9:23:46       就緒
...

3.創建定時執行任務

  命令行下鍵入schtasks /create /?,查看更為詳細的參數說明,僅列舉我們最為關心的幾個參數。

/TN taskname 以路徑\名稱形式指定對此計划任務進行唯一標識的字符串。
/TR taskrun 指定在這個計划時間運行的程序的路徑和文件名。
    例如: C:\windows\system32\calc.exe
/SC schedule 指定計划頻率。
    ==> 創建計划任務“EventLog”以開始運行 wevtvwr.msc
    SCHTASKS /Create /TN EventLog /TR wevtvwr.msc /SC ONEVENT
    如每分鍾、每小時、每天、每星期
      MINUTE: 11439 分鍾;
      HOURLY: 1 - 23 小時;
      DAILY: 1365 天;
      WEEKLY: 152 周;
/ST starttime 指定運行任務的開始時間。
  時間格式為 HH:mm (24 小時時間),例如 14:30 表示2:30 PM。如果未指定 /ST,則默認值為當前時間。/SC ONCE 必需有此選項。

3.1創建任務

  我們創建一個名為"sync-opensource",定期執行某個bat腳本,在每天的11:30執行。創建該任務的命令如下。

schtasks /create /tn "sync-opensource" /tr "E:\PycharmProjects\opensource\sync.bat" /sc daily /st 11:30

4其它

4.1查找指定任務

  如查找我們上面創建的sync-opensource任務。

C:\Users\Administrator>schtasks -query | find "sync-opensource"
sync-opensource                          2019/9/2 11:30:00      就緒

4.2刪除任務

  可以使用如下命令,刪除指定的任務。

schtasks /delete /tr taskname

  更多,請參考幫助文檔。以上! 

參考

每天一個linux命令(50):crontab命令

  https://www.cnblogs.com/peida/archive/2013/01/08/2850483.html

windows下定時任務設置

  https://www.cnblogs.com/SZxiaochun/p/6370702.html

CentOS Crontab(定時任務):

  https://www.cnblogs.com/wt645631686/p/6868672.html


免責聲明!

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



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