Linux定时任务
linux定时任务详解
一、Linux定时任务
1. 配置文件:
#该文件中所列用户不允许使用crontab命令
/etc/cron.deny
#该文件中所列用户允许使用crontab命令
/etc/cron.allow
#这个目录用来存放任何要执行的crontab文件或脚本
/etc/cron.d/
#这个文件就是系统任务调度的配置文件
/etc/crontab
#所有用户定义的crontab 文件都被保存在这个目录中
/var/spool/cron
2. Linux定时任务分类
2.1 系统任务调度
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。
2.2 用户任务调度
用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。
所有用户定义的crontab 文件都被保存在/var/spool/cron目录中。/var/spool/cron/:
目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名。
PS: Linux中cron和Spring的cron是不一样的
3.crontab -e 和 vi /etc/crontab区别
两种都是编辑定时任务。
3.1 crontab -e
crontab -e相当于 cd /var/spool/cron/; vim root; 编辑的是当前用户的定时任务,一般用这种。
#crontab参数列表
crontab -e #编辑定时任务
crontab -l #查看定时任务
crontab -r #删除定时任务
crontab -u #指定其他用户
3.2 vi /etc/crontab
/etc/crontab;编辑的是系统的定时任务,一般用不到。
3.3 编辑完定时任务需要重启吗?
不需要,因为保存就会自动刷新定时任务。
3.4 定时任务是否生效,查看日志
/var/log/cron 这个是定时任务的日志文件,可以查看
tail -100f /var/log/cron
4.定时任务表达式含义
crontab文件的含义:用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command 顺序:分 时 日 月 周
●minute: 表示分钟,可以是从0到59之间的任何整数。
●hour:表示小时,可以是从0到23之间的任何整数。
●day:表示日期,可以是从1到31之间的任何整数。
●month:表示月份,可以是从1到12之间的任何整数。
●week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
●command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
在以上各个字段中,还可以使用以下特殊字符:
●星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
●逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
●中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
●正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
5. 定时任务表达是常用例子
* * * * * # 每分钟执行一次
00 02 * * * # 每天2点执行一次
00 02 * * * ls #每天的凌晨2点整执行
00 02 1 * * ls #每月的1日的凌晨2点整执行
00 02 14 2 * ls #每年的2月14日凌晨2点执行
00 02 * * 7 ls #每周天的凌晨2点整执行
00 02 * 6 5 ls #每年的6月周五凌晨2点执行
00 02 14 * 7 ls #每月14日或每周日的凌晨2点都执行
00 02 14 2 7 ls #每年的2月14日或每年2月的周天的凌晨2点执行
*/10 02 * * * ls #每天凌晨2点,每隔10分钟执行一次
* * * * * ls #每分钟都执行
00 00 14 2 * ls #每年2月14日的凌晨执行命令
*/5 * * * * ls #每隔5分钟执行一次
00 02 * 1,5,8 * ls #每年的1月5月8月凌晨2点执行
00 02 1-8 * * ls #每月1号到8号凌晨2点执行
0 21 * * * ls #每天晚上21:00执行
45 4 1,10,22 * * ls #每月的1,10,22号的4:45执行
45 4 1-10 * * ls #每月的1到10号的4:45执行
3,15 8-11 */2 * * ls #每隔两天的上午8点到11点的第3和第15分钟执行
0 23-7/1 * * * ls #晚上11点到早上7点之间,每隔一个小时执行
15 21 * * 1-5 ls #周一到周五每天晚上21:15执行
#0/1 和 */1 的区别
0 0/1 * * * 输出为:
第 1次执行 2024-11-01 00:00:00
第 2次执行 2024-11-02 00:00:00
第 3次执行 2024-11-03 00:00:00
第 4次执行 2024-11-04 00:00:00
效果为每天的0点执行一次。0 */1 * * * 输出为:
第 1次执行 2024-11-01 18:00:00
第 2次执行 2024-11-01 19:00:00
第 3次执行 2024-11-01 20:00:00
第 4次执行 2024-11-01 21:00:00效果为每小时执行一次。
更多推荐
所有评论(0)