Tiven

Tiven

博观而约取,厚积而薄发

天问的个人网站(天问博客),专注于Node.js、Vue.js、React、Vite、Npm、Nginx等大前端技术。不断学习新技术,记录日常开发问题,持续分享coding,极客开源,共同进步。生命不息,奋斗不止... [ hexo blog ]

Linux强大的定时任务-Crontab


linux内置的cron进程能帮我们实现各种各样的定时任务,例如:每周重启服务器、定时清理日志logs、定时刷数据、定时发邮件等等。 cron搭配shell脚本,可以执行非常复杂的指令,实现非常复杂的业务,真可谓是简单又强大。

Linux Crontab

Crontab介绍

我们经常使用的是crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件。

  • /var/spool/cron/ 目录下存放的是每个用户包括rootcrontab任务,每个任务以创建者的名字命名。
  • /etc/crontab 这个文件负责调度各种管理和维护任务。
  • /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
  • 我们还可以把脚本放在/etc/cron.hourly/etc/cron.daily/etc/cron.weekly/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。
  • /var/spool/mail 目录存放着各种定时任务的执行日志,方便查看脚本任务的执行情况、报错信息等等。

Crontab使用

常用命令:

  • crontab -e 编辑任务列表,执行命令后会进入vim编辑模式,每一行是一条任务命令。当然也可以直接进入/var/spool/cron/目录,编辑对应的任务配置文件。
  • crontab -l 查看任务列表
  • crontab -r 删除任务列表

注意: 任务配置文件做好备份,不要轻易使用crontab -r命令。

  • 例:
* * * * * /root/app/shell/run.sh 

说明: 此例 每分钟 执行一次 /root/app/shell/ 目录中的 run.sh 脚本。

提示: 每个 * 之间有一个空格,* 与脚本之间也有一个空格。

crontab时间格式说明

* 含义 范围
第一个 * 一小时当中的第几分钟 0-59
第二个 * 一天当中的第几小时 0-23
第三个 * 一月当中的第几天 1-31
第四个 * 一年当中的第几月 1-12
第五个 * 一周当中的星期几 0-7(0和7都是星期天)
  • crontab范例
*/5 * * * *             每五分钟执行      
0 * * * *               每小时执行        
0 0 * * *               每天执行          
0 0 * * 0               每周执行          
0 0 1 * *               每月执行          
0 0 1 1 *               每年执行          
0 */12 * * *            每12小时执行      
3,15 * * * * xx.sh      每小时的第3和第15分钟执行
3,15 8-11 * * * xx.sh   在上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * xx.sh 每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 xx.sh   每周一上午8点到11点的第3和第15分钟执行
0 23-7/1 * * * xx.sh    晚上11点到早上7点之间,每隔一小时执行

特别说明: /前后没有空格,其他每个字符间都有空格,切记、切记、切记。)


欢迎访问:个人博客地址