参考: https://blog.51cto.com/u_15175006/2720985

安装crontab

# yum安装crontab
yum install -y crontab

# 开机自启crond服务并现在启动
systemctl enable --now crond

单次计划任务

# 安装at
yum install at -y

# 开启atd服务
systemctl enable --now atd
  • at命令:时间
    • at>要运行的命令
[root@localhost ~]# at 11:32
at> ls
at> reboot
# 写完后CTrl+D 退出
  • 查看at任务
# 显示用户待执行任务列表
[root@localhost ~]# atq
2	Fri Nov  5 08:08:00 2021 a root

# 查看任务
[root@localhost ~]# at -l
3   Sun Aug 15 11:36:00 2021 a root

# 查看指定编号的计划任务
## at -l 如果查看处有多条计划任务的话,用at -c 编号,即可查看信息
at -c 1
  • 取消计划任务
# 取消计划任务 atrm 编号
atrm 1
# 查看计划任务是否已经删除
at -l

创建1分钟后的单次任务

at now + 1 min
> useradd tgb
# 写完后CTrl+D 退出

周期性计划任务

-e:编辑该用户的计时器设置;
-l:列出该用户的计时器设置;
-r:删除该用户的计时器设置;
-u <用户名称>:指定要设定计时器的用户名称。

在这里插入图片描述

添加计划任务

# 配置方式
crontab -e

# 配置规则
分 时 日 月 星期 (绝对路径)命令
# 示例 11:57 执行reboot
## &>/dev/null 禁止发邮件
57 11 * * * /usr/sbin/reboot &>/dev/null

# 查看计划任务
crontab -l

禁止任务发邮件

# 示例 11:57 执行reboot
## &>/dev/null 禁止发邮件
57 11 * * * /usr/sbin/reboot &>/dev/null

计划任务日志存储目录

# 此目录记录了Linux下所有用户的计划任务信息
## 以crontab -u -e方式写入的计划任务都会再此目录下生成文件


# 查看计划任务
cat /var/log/cron

系统级别的crontab文件

# 系统级别的crontab会记录在该文件下
cat /etc/crontab

指定用户创建计划任务

# 指定用户创建计划任务
crontab -e -u natasha

查看指定用户的计划任务

# 查看用户创建计划任务
crontab -l -u natasha

定时格式

计划任务格式在线生成
https://crontab.guru/

多个时间计划任务

# 配置示例--2点半,3点半,4点半执行任务
## 2点30分执行一次任务
## 3点30分执行一次任务
## 4点30分执行一次任务
30 2-4 * * * 命令

# 分钟间隔段执行命令
## 2点15分执行一次计划任务
## 2点30分执行一次计划任务
## 2点50分执行一次计划任务
15,30,50 2 * * * 命令

# 指定星期6的2:15,2:30,2:50执行计划任务
15,30,50 2 * * 6 命令

间隔时间计划任务

*/表示每隔多长时间执行任务

参考: https://www.runoob.com/w3cnote/linux-crontab-tasks.html

# 每间隔两小时的30分时执行一次计划任务 */2
## 分 时 日 月 星期 (绝对路径)命令
30 */2 * * * 命令

# 每间隔2分钟执行一次任务
## 分 时 日 月 星期 (绝对路径)命令
*/2 * * * * 命令

# 每周日23点0分自动清理日志
0 23 * * */0 echo " " > /alidata/tunnel.log

每分钟执行一次的任务

# 5个*表示每分钟执行
## &>/dev/null表示禁止发邮件
* * * * * rsync -av 10.0.0.8:/data/www /data/backip &>/dev/null

在这里插入图片描述

计划任务加锁

  • 延时任务
    • 例如重启时任务无法运行。
  • flok锁:
    • 例如一个备份没完成,又一个备份开始

在这里插入图片描述

查看所有用户的计划任务

cat /etc/passwd | cut -f 1 -d : |xargs -I {} crontab -l -u {}

查看计划任务日志

#查看系统计划任务日志
tail --f /var/log/cron

# 使用关键字过滤计划任务日志
grep "alidata" /var/log/cron

禁止crontab发送邮件

方法1:

# 在任务的第一行指定地址为空即可
MAILTO=""

Linux计划任务-定时任务-小白菜博客
方法2:

## 5个*表示每分钟执行一次
## &>/dev/null表示禁止发邮件
* * * * * rsync -av --delete 10.0.0.8:/data/www/ /data/backup &>/dev/null

在这里插入图片描述

清空邮件

# 清空收件箱
cat /dev/null > /var/spool/mail/root