zoukankan      html  css  js  c++  java
  • 设置定时执行任务

      本篇主要介绍如何在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:UsersAdministrator>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:UsersAdministrator>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:windowssystem32calc.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:PycharmProjectsopensourcesync.bat" /sc daily /st 11:30

    4其它

    4.1查找指定任务

      如查找我们上面创建的sync-opensource任务。

    C:UsersAdministrator>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

  • 相关阅读:
    MySql主从库配置
    Linux安装MySql5.6.43(亲测)
    Linux安装ffmpeg(亲测)
    Linux JDK安装(亲测)
    Linux磁盘挂载(亲测)
    Finance_CAPM&APT
    Python_QT_量化投资/量化交易 基础入门课
    581. Shortest Unsorted Continuous Subarray
    3. Longest Substring Without Repeating Characters
    239. Sliding Window Maximum
  • 原文地址:https://www.cnblogs.com/Hi-blog/p/Schedule-Tasks-On-Linux-And-Windows.html
Copyright © 2011-2022 走看看