发布于 

定时任务crontab 和 at

定时任务 crontab

基本语法

crontab  [选项]

-e  编辑crontab定时任务

-l   查询crontab任务

-r   删除当前用户的所有crontab任务

任务格式

* * * * *  命令
星号 意义
第一个* 一个小时的第几分钟
第二个* 一天中的第几个小时
第三个* 一个月中的第几天
第四个* 一年中的第几个月
第五个* 一周的第几天

特殊符号 含义
* 代表任何时间,比如第一个*表示一个小时的每分钟都执行一次
代表不连续的时间,比如”0 2,4,7 * * * 命令”表示2点4点7点的0分执行一次命令
- 代表连续的时间范围,比如”0 5 * * 1-5 命令” 表示周一到周五每天5点0分执行命令
*/n 代表每隔多久执行一次,比如”*/10 * * * * 命令” 表示每隔10分钟执行一次命令

设置

设置任务调度文件: /etc/crontab

设置个人任务调度: crontab -e

接着输入任务到调度文件

如:*/1 * * * * date >> /tmp/date.txt 表示每分钟将当前时间追加到date.txt文件中

如果执行的是脚本,请注意添加脚本的执行权限

删除当前账户设置的所有任务:crontab -r

重启任务调度服务器:service crond restart

案例

每天凌晨两点将BLG数据库备份到/home/db.bak

0 2 * * * mysqldump -uroot -p密码 BLOG >> /root/db_bak/db.bak

一次性定时任务 at

安装at命令

先反查依赖包

yum provides at

根据查到的依赖包安装

yum -y install  at-3.1.13-24.el7.x86_64

实例

两天后下午5点执行/bin/ls /home命令,输入完命令按两次ctrl+D完成设置

[root@CentOS01 tmp]# at 5pm + 2 day
at> /bin/ls /home
job 3 at Sun Feb 13 17:00:00 2022

#或者设置明天下午5点的任务
[root@CentOS01 tmp]# at 5pm tomorrow
#设置两分钟后任务
[root@CentOS01 tmp]# at now + 2 minutes

查看任务队列

[root@CentOS01 tmp]# atq
1    Sun Feb 13 17:00:00 2022 a root
3    Sun Feb 13 17:00:00 2022 a root

删除已设置的任务,atrm 编号

[root@CentOS01 tmp]# atrm 3
[root@CentOS01 tmp]# atq
1    Sun Feb 13 17:00:00 2022 a root