• Shell编程之定时任务


    什么是定时任务

            顾名思义,定时任务指的就是在指定/特定的时间进行工作,例如备份/归档数据、清理临时文件等。

            在 Linux 中,可以使用 cron 定时器来定期执行任务。cron 是一个在后台运行的守护进程,用于根据指定的时间表自动执行任务。

    linux系统中可以使用如下命令进行安装

    1. yum install contabs #使用yum安装
    2. systemctl enable crond #设置开机自启动
    3. systemctl start crond #启动 crond
    4. service crond restart #重启 crond

    安装启动完成后可以使用如下命令检查服务状态

    service crond status

    crontab常用参数

    常用参数
    -l列出当前用户的 Crontab 配置文件中所有的定时任务条目。
    -r删除当前用户所有的定时任务条目
    -u指定某一个用户
    -e使用默认编辑器打开当前登录用户的 Crontab 配置文件。在该配置文件中配置定时任务。

     

    示例:

    crontab -l -u root #查看root用户下的定时任务

    crontab -e -u root #对定时任务进行维护

    定时表达式

    在上面的示例中可以看到定时任务表达式的基本格式

    *  *  *  *  * user command

     crontab 中的五个时间字段分别代表了定时任务执行的时机:

    1.  第一个时间字段是分钟数,取值范围是 0~59;
    2. 第二个时间字段是小时数,取值范围是 0~23;
    3. 第三个时间字段是一个月中的具体日期,取值范围是 1~31;
    4. 第四个时间字段是一个月中的月份,取值范围是 1~12;
    5. 第五个时间字段是星期几,取值范围是 0~6,其中 0 表示星期日,1~6 表示星期一到星期六。

    除了特定数字以外还支持如下特殊字符

    符号*/-
    含义任意值起始触发,后间隔触发枚举值范围值
    例子在分域中表示,每分钟都匹配1/2 在分域表示起始分钟为1触发,后每间隔2分再次触发5,10 在分钟域表示5分跟10分都匹配0-23 在时域表示0点到23点这个范围都匹配

    示例:在上面可以看到定时任务执行任务表达式中可以看到mk.sh,其内容如下,大致是在指定目录下根据时间戳创建文件夹,并在该文件夹下根据时间戳创建文件。

    1. #!/bin/bash
    2. echo "创建文件..."
    3. timestamp=$(date +%Y%m%d%H%M%S)
    4. backup_dir="/root/crontab/$timestamp"
    5. mkdir -p "$backup_dir"
    6. cd $backup_dir
    7. touch $timestamp.txt
    8. echo "创建完成。"

    定时任务执行结果如下:

     注意

             这里可以看到最下面有一行提示 You have new mail in /var/spool/mail/root ,这里就是执行定时任务系统记录的信息(可能是正常的输出或者是异常提示),可以使用 cat 命令进行查看

    cat /var/spool/mail/root

     

            这里附上一个很有用的网址,可以根据自己的需要在线生成表达式:在线Cron表达式生成器

  • 相关阅读:
    CSP-J 2023第一轮真题公布
    批量修改/插入数据库的时候究竟该怎么选择?
    Shopify 卖家如何利用Pinterest 引流推广?
    2022-11-06
    springboot+校园交友平台小程序 毕业设计-附源码191733
    pod详解
    m基于GA遗传算法的高载能负荷响应优化控制模型matlab仿真
    『贪吃蛇』AI 算法简易实现(中秋特别版)
    DDD实践_如何使用DDD设计代码模型
    SpringBoot项目整合
  • 原文地址:https://blog.csdn.net/qq_36110736/article/details/132840385