定时任务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