contOS crontab 定时执行python脚本

安装crontab

yum install crontabs

crontab语法

  • 常用系统命令

    ntsysv  //查看系统开机启动项
    chkconfig crond on  //添加开机自启
    
    service crond start //启动服务
    service crond stop //关闭服务
    service crond restart //重启服务
    service crond reload //重新载入配置
    service crond status //查看crontab服务状态
    cat /var/log/cron //查看运行日志
    
  • 参数说明

    minute   hour   day   month   week   command     顺序:分 时 日 月 周
    
    • minute:表示分钟,可以是从0到59之间的任何整数。
    • hour:表示小时,可以是从0到23之间的任何整数。
    • day:表示日期,可以是从1到31之间的任何整数。
    • month:表示月份,可以是从1到12之间的任何整数。
    • week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
    • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

    在以上各个字段中,还可以使用以下特殊字符:

    • 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
    • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
    • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
    • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

    例:在每天的23点30分执行脚本,并同时输出执行错误日志到log文件

    30 23 * * * python /home/***/***/test.py >> /home/***/***/test.log 2>&1
    
    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      //每半小时同步一下时间
    

修改crontab配置文件

  • 方法一:直接输入命令 crontab -e
    crontab默认使用vi编辑器,系统没vi编辑器会提示以下错误,可直接切换至配置文件目录下编辑
    crontab配置文件都被保存在 /var/spool/cron 目录中
    [root@VM_0_5_centos log]# crontab -e
    /bin/sh: /usr/bin/vi: No such file or directory
    crontab: "/usr/bin/vi" exited with status 127
    [root@VM_0_5_centos log]#
    
    crontab配置文件内容:
    1*/1 * * * * /usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &
    2 0 0 * * * /usr/local/qcloud/YunJing/YDCrontab.sh > /dev/null 2>&1 &
    3 * * * * * python /DouYinVersion/spider.py  # 每分钟运行一次spider.py
    
  • 方法二:修改/etc/crontab配置文件
    /etc/crontab 比 crontab -e 多了一个用户名字段,该方法是系统级的,必须root权限使用
      1 SHELL=/bin/bash
      2 PATH=/sbin:/bin:/usr/sbin:/usr/bin
      3 MAILTO=root
      4
      5 # For details see man 4 crontabs
      6
      7 # Example of job definition:
      8 # .---------------- minute (0 - 59)
      9 # |  .------------- hour (0 - 23)
     10 # |  |  .---------- day of month (1 - 31)
     11 # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
     12 # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
     13 # |  |  |  |  |
     14 # *  *  *  *  * user-name  command to be executed
     15 * * * * * root python /DouYinVersion/spider.py  # 每分钟运行一次spider.py
    

坑点:

  • 命令参数问题
    每项参数后面都有一个空格
  • 路径问题
    python解释器路径使用绝对路径 查询python解释器路径: which python
    脚本文件使用决定路径 查询脚本路径:find / -name xxx.py
    重要的事情说三遍:
    **脚本代码中必须使用绝对路径**
    **脚本代码中必须使用绝对路径**
    **脚本代码中必须使用绝对路径**
    
  • 配置完成不能正常运行可查看/var/spool/mail 目录下的运行日志

本文仅供学习交流使用,如侵立删!
企鹅 : 1033383881


你可能感兴趣的:(contOS crontab 定时执行python脚本)