任务调度是什么
一 任务调度是指在系统的某个时间执行特定的命令或者程序。
二 任务调度分类:
- 系统任务,有些任务必须周而复始的的执行, 如病毒扫描,定期运行垃圾清理 。
- 用户任务, 某些用户可能在特定的时间执行特定的程序, 比如定期发送邮件, 定期备份数据等
综上,任务调度的关键在于如何定时执行程序, linux系统提供crontab命令支持任务调度。
linux crontab命令
1参数
参数 | 含义 |
---|---|
-u user | 指定用户的调度任务 |
-e | 编辑任务调度文件 |
-l | 列出任务列表 |
-r | 删除调度任务 |
2 如何定时 ?
时间用五个占位符表示,分别为 分钟(0-59)、小时(0-23)、日(1-31)、月(1-12)、星期(0-7,且0、7都表示周日)。
特殊符号
特殊符号 | 含义 |
---|---|
* | 表示任何时间 ,* *1 * *表示每个月的1号执行一次命令 |
, | 表示表示不连续的时间,1,3,5 **** 表示每个小时的第1,第3,第5分钟都执行一次程序 |
- | 代表连续的时间范围,01**1-3 表示周一到周三的1点0分执行 |
*/n | 表示间隔多久执行一次, 比如*/20 * * * * 表示每隔20分钟执行一次 |
3 定时举例
0 22 *** 命令 : 在22:00 执行命令
0 7 **1 命令 : 每周一的7:00 执行命令
0 17 * * 1,3,5 : 周一,周三,周五17:00执行命令
0 17 1-5 * * 命令: 每月1号到5号17:00执行命令
任务调度任务实例
需求: 每隔2两分钟将当前日期追加到 /home/mydate 文件中
- 新建 mytask1.sh程序,执行追加命令 。
- 设置修改权限
- 任务调度
[root@localhost home]# touch task1.sh
[root@localhost home]# vim task1.sh
date >> /home/mydate.txt
[root@localhost home]# crontab -e
*/2 * * * * /home/task1.sh
总结:
任务调度过程需要任务所有者对程序拥有执行权限。如果在执行过程中生成文件,那么相当于该用户用户创建文件,故需要改用户对目录有写入权限
crontab 的定时只能精确到分钟,如果需要到秒的定时可以使用Spring定时器