Shell编程之定时任务

什么是定时任务

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

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

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

yum install contabs  #使用yum安装

systemctl enable crond  #设置开机自启动

systemctl start crond   #启动 crond   

service crond restart   #重启 crond

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

service crond status

Shell编程之定时任务_第1张图片

crontab常用参数

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

 

示例:

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

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

定时表达式

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

*  *  *  *  * user command

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

Shell编程之定时任务_第2张图片

  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,其内容如下,大致是在指定目录下根据时间戳创建文件夹,并在该文件夹下根据时间戳创建文件。

#!/bin/bash

echo "创建文件..."

timestamp=$(date +%Y%m%d%H%M%S)

backup_dir="/root/crontab/$timestamp"

mkdir -p "$backup_dir"

cd $backup_dir

touch  $timestamp.txt

echo "创建完成。"

定时任务执行结果如下:

Shell编程之定时任务_第3张图片

 注意

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

cat /var/spool/mail/root

 

Shell编程之定时任务_第4张图片

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

你可能感兴趣的:(shell编程,linux,运维,服务器,shell)