zoukankan      html  css  js  c++  java
  • [linux] 定时任务crontab

    测试网站:https://crontab.guru/(可以看到设定好后的各个执行时间点,大爱)

     

    相关文件:

    • /var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名
    • /etc/crontab 这个文件负责调度各种管理和维护任务。
    • /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
    • 我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。
    • 日志:/var/log/cron

    基本的语法:

    *           *        *        *        *           command

    minute   hour    day   month   week      command

    分          时         天      月        星期       命令

    特殊字符:

    星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

    逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”。

    中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”。

    正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

    例:

    分 时 天 月 星期 命令
    * * * * * 每分钟执行一次
    3 * * * * 每小时的第3分钟执行一次
    */5 * * * * 每5分钟执行一次 (会在5-10-15…执行,而不是刚创建好就执行)
    1 */2 * * * 每隔2小时执行一次,24:01 2:01 4:01 ...执行
    0 17 */2 * * 每隔2天执行一次,1号17点,3号17点,5号17点 ...执行

    注:

    * */1 * * * 并不是每小时执行一次,而是每分钟执行一次;

    * */2 * * * 是开启定时任务后的2小时0、1…59分钟,4小时0、1…59分钟,6小时…执行一次

    问题:使用crontab -e更新后,第一次执行时间会不会改变?

    任务时间格式定好后什么时候执行就已经定死了,所以也就和更不更新/var/spool/cron/root文件没有关系了

    运行脚本

    command可以是一个脚本sh文件

    sh文件包含了一系列操作

    如:每隔1小时执行save_user.sh,并且日志导出到crontab_save_user.log文件中

    0 */1 * * * /home/justaman/python/crontab_task/save_user.sh >> /home/justaman/python/log/crontab_save_user.log 2>&1

    save_user.sh如下:

    #!/bin/bash
    echo "----------开始----------"

    # 启动虚拟环境
    source /home/justaman/python/python_virtual/rss/bin/activate

    # 切换到程序运行目录
    cd /home/justaman/python/code/rss/save_data/cnblog/get_user

    # 执行程序
    /home/justaman/python/python_virtual/rss/bin/python3 user.py

    注意:如果是用python脚本写入定时任务时,任务字符串后面必须加换行符" ",否则不会执行 

    编辑/查看定时任务

    crontab –e 编辑定时任务,包含了各个定时任务

    crontab –l 列出所有的定时任务

    crontab –r 删除当前用户的定时任务

    crontab服务启动与关闭

    /etc/init.d/crond start

    /etc/init.d/crond stop

    /etc/init.d/crond restart

    参照:https://www.cnblogs.com/erbing/p/10019172.html

  • 相关阅读:
    jQuery表单验证以及将表单序列化为json对象小练习
    判断客户端浏览器是否安装了Flash插件
    css文本超出2行就隐藏并显示省略号
    jquery and js 判断一个元素是否存在
    jquery表单实时验证
    trigger()和triggerHandler()
    IE浏览器下面要实现滤镜(transparent),必须要加filter
    使用javascript判断浏览器类型
    web引入
    前端大纲********
  • 原文地址:https://www.cnblogs.com/justaman/p/12075440.html
Copyright © 2011-2022 走看看