[TOC]
任务
循环任务 (crond)
crontab 进行定时任务的设置
crontab [选项]
-e # 编辑crontab定时任务
-l # 查询crontab任务,列出当前有哪些任务调度
-r # 删除当前用户所有的crontab任务,终止任务调度
service crond restar # 重启任务调度
- 快速入门
设置任务调度文件:/etc/crontab
设置个人任务调度。执行crontab -e
命令
接着输入任务调度文件
如*/1 * * * * ls -l /etc/ > /tmp/to.txt
意思是说每小时的每分钟执行一次ls -l /etc/ > /tmp/to.txt
- 参数细节(Cron表达式)
项目 | 含义 | 范围 |
---|---|---|
第一个“*” | 一小时当中的第几分钟 | 0-59 |
第二个“*” | 一天当中的第几小时 | 0-23 |
第三个“*” | 一个月当中的第几天 | 1-31 |
第四个“*” | 一年当中的第几月 | 1-12 |
第五个“*” | 一周当中的星期几 | 0-7(0和7都代表星期日) |
应用实例
案例1:每隔1分钟,将当前日期信息,追到/tmp/mydate
文件中
crontab -e
*/1 * * * * date >> mydate
案例2:每隔1分钟,将当前日期和日历都追到/tmp/mycal
文件中
*/1 * * * * date >> mydate
chmod a+x /root/my.sh
crontab -e
*/1 * * * * /root/my.sh
案例3:每天凌晨2:00 将mysqlshujuku testdb,备份到文件中
#提示: mysqldump -u root -p 密码 数据库 >> /home/db.bak
重启任务调度
service crond restar
定时任务 (at)
- at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行
- 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业
- at命令是一次性定时计划任务,执行完一个任务后不在执行此任务了
- 在使用at命令时候,一定要保证atd进程的启动,可以使用相关指令来查看(ps -ef |grep atd)
at命令格式
at [选项] [时间]
# ctrl+d 结束 at 命令的输入
[时间]
hh:mm 假如该时间已过去,那么就放在第二天执行
当然也能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的 词语来指定时间
采用12小时计时制
选项 | 含义 |
---|---|
-m | 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出 |
-I | atq的别名 |
-d | atrm的别名 |
-v | 显示任务将被执行的时间 |
-c | 打印任务的内容到标准输出 |
-V | 显示版本信息 |
-q<列队> | 使用指定的列队 |
-f<文件> | 从指定文件读入任务而不是从标准输入读入 |
-t<时间参数> | 以时间参数的形式提交要运行的任务 |
时间 | 执行说明 |
---|---|
hh:mm | 假如该时间已过去,那么就放在第二天执行 |
12小时计时制 | 6am(早上6点),8pm (下午8点) |
具体日期 | month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)指定的日期必须跟在指定时间的后面,例如:04:11 2021-03-01 |
相对时间 | now + number 时间单位,时间单位:minutes(分钟) 、hours(小时)、days(天)、weeks(周),例如:五分钟后 now + 5 minutes |
日期相对时间 | today(今天),tomorrow(明天) |
模糊时间 | midnight(深夜),noon(中午),teatime(饮茶时间,一般指下午4点) |
应用实例
案例1:2天后下午5点执行/bin/ls /home
[root@xxx /]at 5pm + 2 days
at> /bin/ls /home
(命令输入完成后,输入两次ctrl + d
)
案例2:atq
命令来查看系统中没有执行的工作任务
atq
案例3:明天17点钟,输出时间到指定文件内,比如/root/date100.log
[root@xxx /]at 5pm + tomorrow
at> date >> /root/date100.log
(命令输入完成后,输入两次ctrl + d
)
案例4:2分钟后,输出时间到指定文件内,比如/root/date200.log
[root@xxx /]at now + 2 minutes
at> date >> /root/date200.log
(命令输入完成后,输入两次ctrl + d
)
删除任务 (atrm)
案例五:删除已经设置的任务
atrm 编号
atrm 1