最近工作中遇到一个需求,需要每天十点钟执行一个任务,其实用Java也可以解决,但是Linux有一个内置命令可以轻松地设置定时任务。
crontable
用crontab -e进入当前用户的工作表编辑,是常见的vim界面。每行是一个任务。
crontab的命令构成为 时间+动作,其时间有分、时、日、月、周五种,操作符有
Seconds Minutes Hours DayofMonth Month DayofWeek
时间元素 | 可出现的字符 | 有效数值范围 |
---|---|---|
Seconds | , - * / | 0-59 |
Minutes | , - * / | 0-59 |
Hours | , - * / | 0-23 |
DayofMonth | , - * / ? L W | 0-31 |
Month | , - * / | 1-12 |
DayofWeek | , - * / ? L # | 1-7或SUN-SAT |
字符 | 作用 | 举例 |
---|---|---|
, | 列出枚举值 | 在Minutes域使用5,10,表示在5分和10分各触发一次 |
- | 表示触发范围 | 在Minutes域使用5-10,表示从5分到10分钟每分钟触发一次 |
* | 匹配任意值 | 在Minutes域使用*, 表示每分钟都会触发一次 |
/ | 起始时间开始触发,每隔固定时间触发一次 | 在Minutes域使用5/10,表示5分时触发一次,每10分钟再触发一次 |
? | 在DayofMonth和DayofWeek中,用于匹配任意值 | 在DayofMonth域使用?,表示每天都触发一次 |
# | 在DayofMonth中,确定第几个星期几 | 1#3表示第三个星期日 |
L | 表示最后 | 在DayofWeek中使用5L,表示在最后一个星期四触发 |
W | 表示有效工作日(周一到周五) | 在DayofMonth使用5W,如果5日是星期六,则将在最近的工作日4日触发一次 |
- 每1分钟执行一次myCommand
* * * * * myCommand
- 或者每天十点执行一次自己写的脚本
00 10 * * * source /home/web_server/.bash_profile && cd /home/tools/work.sh
cron表达式可以在需要的时候使用在线生成网站,地址:https://cron.qqe2.com/