一、介绍
linux自带定时任务crontab
二、命令
编辑定时器
crontab -e
30 23 * * * /path/beifen.sh >> /tmp/1.log
表示每晚的23:30执行/path/beifen.sh脚本,
并且把项目启动日志重定向输出到/tmp/1.log文件,也可以不加日志去掉>>及后面的路径。
时间表达
[分] [小时] [日期] [月] [星期] 具体任务
其中:
分,表示多少分钟,范围:0-59
小时,表示多少小时,范围:0-23
日期,表示具体在哪一天,范围:1-31
月,表示多少月,范围:1-12
星期,表示多少周,范围:0-7,0和7都代表星期日
还有一些特殊字符,比如:
例如:
例如: * 8 * * * 表示每天 8 点的每一分钟都执行一次命令
例如:10 8,10,12 * * *表示在每天的 8:10,10:10,12:10 都会执行一次命令
例如:10 8 * * 1-3 表示每周一到周三的 8:10 执行一次命令
例如:* /10 * * * *表示每隔 10 分钟就执行一次命令
总结:
周和日最好不要同时用
定时任务要加注解
可以定向到日志文件或者空文件
定时任务一定是绝对路径,且目录必须存在才能出结果
crontab 服务一定要开启运行
三、检查服务
service crond status // 查看运行状态
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
四、windows任务计划
linux不支持秒
windows调度任务包含秒
Cron表达式的格式在不同的实现中确实存在差异,主要体现在是否支持秒这一字段上。传统的Unix/Linux系统中的crontab工具不支持秒这一字段,因此cron表达式通常包含六个字段。而在一些现代的调度框架或工具中,如Spring Boot中的@Scheduled注解、某些版本的Windows任务计划程序或其他第三方库(如Java中的CronSequenceGenerator或Python的APScheduler),可能会支持包含秒在内的七个字段的cron表达式。
包含秒的cron表达式(七个字段)
1秒 (Seconds) - 范围为0-59。
2分钟 (Minutes) - 范围为0-59。
3小时 (Hours) - 范围为0-23。
4日期 (Day of month) - 范围为1-31。
5月份 (Month) - 范围为1-12。
6周几 (Day of week) - 范围为0-6或1-7(0和7都是周日)。
7年份 (Year) - 可选字段,范围因实现而异。
示例
对于不包含秒的传统cron表达式:(linux)
*/3 * * * * 表示每3分钟执行一次。
对于包含秒的现代cron表达式:(Windows·)
0 */3 * * * * 表示每3分钟的第0秒执行一次。
总结
传统上,cron表达式主要用于Unix/Linux系统中的定时任务调度,不包含秒字段。然而,在其他环境或工具中,为了提供更精细的控制,可能扩展了cron表达式的格式以包含秒字段。因此,在处理定时任务时,需要根据使用的具体工具或平台来确定cron表达式的格式。