• ubuntu crontab 在时间段内随机执行一次


    crontab 在linux下做定时任务的命令,

    1. 基本格式

    * * * * * cmd

    第一个表示:分钟 1-59, 每分钟用 */1

    第二个表示:小时 023

    第三个表示:日期1-31

    第四个表示:月份1-12

    第五个表示:星期几0-6(0表示星期日)

    几个说明例子

    */1 * * * * /path/xx.sh  每分钟执行一次脚本

    0 3 * * 5-6 /path/xx.sh 每周五,周六早上3点执行一次脚本

    可以使用在线的工具来模拟测试写的crontab任务 

    2. crontab 命令

    NAME
         crontab -- maintain crontab files for individual users (V3)
     
    SYNOPSIS
         crontab [-u user] file
         crontab [-u user] { -l | -r | -e }

    基本用法:

    crontab -h 查看帮助

    crontab -l 查看当前定时任务列表

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

    crontab -e 进入编辑模式添加定时任务

    crontab file 添加指定配置文件到定时任务(上面使用-e命令,会在/var/spool/cron/crontabs/user 下生成当前用户名的文件)

    可以此命令预先脚本生成配置文件然后添加到定时任务;

    示例,测试使用的ubuntu server 14

    echo "0 3 * * 1-5 /path/xx.sh" >/var/spool/cron/crontabs/user
    chmod 777 /var/spool/cron/crontabs/user
    crontab /var/spool/cron/crontabs/user
    service crontab restart

    3. 关于定时任务在某一个时间段随机执行一次

    crontab 只能设定定时任务,不能直接设定随机(有知道直接的留言告诉我)

    于是想到了一个 shell脚本随机,然后生成一个随机数,把这个随机数设定在定时任务的时间上,这样每次执行一次,随机一次时间,并重新设定定时任务;任务执行完成删除当前任务,随机一数,并重新配置任务

    这样就达到了在某一个时间段随执行一次任务的想法。

    如下脚本逻辑

    #!/bin/bash
    
    #随机数,表示随机一个30以内的数
    randNum=$(($RANDOM%30))
    
    #user 表示当前登陆的用户
    #path /var/spool/cron/crontabs
    #生成crontab 任务配置文件
    #表示在 每周一到周五早上3点到3点30之间,随机一个时间执行一次数据备份
    echo $[randNum]" 3 * * 1-5 /path/backdb.sh" > /path/user
    
    #设置可执行权限
    sudo chmod 777 /path/user
    #使用crontab 命令添加到定时任务
    sudo crontab /path/user
    #重启服务
    sudo service cron restart
    

      

    参考:http://www.jb51.net/LINUXjishu/151805.html

  • 相关阅读:
    《自拍教程17》Python调用命令
    c和c++学哪个?
    PHP:变量之效果域、静态变量,常量等基础知识
    Java中NIO及基础实现
    零代码=零门槛?
    程序员真的都比较宅吗?
    DataGridView怎样完成添加、删除、上移、下移一行
    C# 控件 RichTextBox 显示行号,而且与Panel彼此联动
    C语言代码中的空白符表示什么
    php 中的4种标记风格介绍
  • 原文地址:https://www.cnblogs.com/cocoajin/p/6676065.html
Copyright © 2020-2023  润新知