任务调度
是指系统在某个时间执行的特定的命令或程序
分类:
1.系统工作:重要的工作必须周而复始地执行
2.个别用户工作:执行某些程序
crondtab
crondtab | |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab定时任务 |
-r | 删除当前用户所有的crontab任务 |
使用说明
- 设置任务调度文件:/etc/crontab
- 设置个人任务调度 crondtab -e
- 输入任务到调度文件
*/l ****ls -l /etc/tmp/to.txt
第一个* | 一小时当中的第几分钟(0-59) |
第二个* | 一天当中的第几小时(0-23) |
第三个* | 一个月当中的第几天(1-31) |
第四个* | 一年当中的第几月(1-12) |
第五个* | 一周当中的星期几(0-7)0和7代表星期日 |
* | 代表任何时间,比如第一个*代表一小时中每分钟都执行一次 |
, | 代表不连续的时间,比如“0 8,18***”代表在每天的8点0分,18点0分执行一次 |
- | 代表连续的时间范围,“0 5 * * 1-6”代表在周一到周六的凌晨5点0分执行命令 |
*/n | 代表每隔多久执行一次“*/10 * * * *”代表每隔10分钟就执行一遍 |
特殊事件案例 | |
---|---|
45 22 * * * | 在22点45分执行 |
0 17 * * 1 | 每周一的17点0分执行 |
0 5 1,15 * * | 代表每个月的第1天第15天的5点0分执行 |
40 4 * * 1-5 | 每周1到周5的4点40分执行 |
*/10 4 * * * | 每天的4点中每隔10分钟执行一次 |
0 0 1,15 * 1 | 每个月的1号,15号和每周1的0点0分执行一次 |
定时备份数据库文件
0 2 * * * mysqldump -u root -p密码 数据库名称 > /home/db.bak
service crond restart
重启任务调度
at定时任务
- at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。
- 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
- at命令是一次性定时计划任务,执行完一个任务后不再执行此任务
- 使用at命令的时候,保证atd进程的启动
ps -ef | greo atd
检测atd是否在运行
at
at 选项 时间,设置at命令
ctrl + d 结束at命令的输入,输出两次
选项 | 含义 |
---|---|
-m | 当指定的任务被完成后,将给用户发送文件 |
-I | atq的别名 |
-d | atrm的别名 atrm n 移除编号为n的job |
-v | 显示任务将被执行的时间 |
-c | 打印任务的内容到标准输出 |
-V | 显示版本信息 |
-q <队列> | 使用指定的队列 |
-f <文件> | 从指定文件读入任务而不是从标准输入读入 |
-t <时间参数> | 以时间参数的形式提交要运行的任务 |
at指定时间的方法
- 接受当天的hh:mm(小时:分钟)式的时间指定,假如该事件已过去,就在第二天执行
- 使用midnight,noon,teatime(一般是下午四点)等比较模糊的词语来指定时间。
- 采用12小时计时制,在时间后面加上am或pm
- 指定命令执行的具体日期格式为month day或mm/dd/yy或dd.mm.yy,指定的日期必须跟在指定时间的后面,例如04:00 2023-11-17
- 使用相对计时法,格式为now+count time-units。now指当前时间,time-units是时间单位,可以是minutes,hours,days,weeks。count是时间的数量,几天几小时几分钟等,例如now+5 minutes指现在的时间加五分钟后执行
- 直接使用today,tomorrow指定完成命令的时间