什么是定时任务
顾名思义,定时任务指的就是在指定/特定的时间进行工作,例如备份/归档数据、清理临时文件等。
在 Linux 中,可以使用 cron 定时器来定期执行任务。cron 是一个在后台运行的守护进程,用于根据指定的时间表自动执行任务。
在linux系统中可以使用如下命令进行安装
yum install contabs #使用yum安装
systemctl enable crond #设置开机自启动
systemctl start crond #启动 crond
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 中的五个时间字段分别代表了定时任务执行的时机:
- 第一个时间字段是分钟数,取值范围是 0~59;
- 第二个时间字段是小时数,取值范围是 0~23;
- 第三个时间字段是一个月中的具体日期,取值范围是 1~31;
- 第四个时间字段是一个月中的月份,取值范围是 1~12;
- 第五个时间字段是星期几,取值范围是 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 "创建完成。"
定时任务执行结果如下:
注意
这里可以看到最下面有一行提示 You have new mail in /var/spool/mail/root ,这里就是执行定时任务系统记录的信息(可能是正常的输出或者是异常提示),可以使用 cat 命令进行查看
cat /var/spool/mail/root
这里附上一个很有用的网址,可以根据自己的需要在线生成表达式:在线Cron表达式生成器