这个简单好用的定时器Cron,你能用的随心应手吗?

你好,我是风一样的树懒,一个工作十多年的后端开发,曾就职京东、阿里等多家互联网头部企业。

点击下方👇关注公众号,带你一起复习后端技术,看看面试考点,补充积累技术知识,每天都为面试准备积累


开工大吉!马上就是金三银四了,各位小伙伴们,你们换工作开始准备了么?我们又要开始学习啦!


Cron是不是第一眼看到就觉得是用在xxl-job中的配置,但是除了xxl-job还能不能做其他的用处呢。比如不需要那么重,就简单做一个定时器,如每天晚上2点需要执行一次某个java文件。可做成

0 0 2 * * java HelloWorld# 或者0 0 2 * * java -jar HelloWorld.jar

即可完成,是不是就不需要额外依赖xxl-job等呢。如果不是java是其他语言,这个Cron将更加方便,下面我们来学习一下Cron吧。


Cron 是一种基于时间的任务调度工具,广泛用于类 Unix 系统(如 Linux 和 macOS)中,允许用户按照预定的时间或间隔自动执行某些命令或脚本。它是通过配置文件 crontab 来管理定时任务的,支持非常灵活的调度方式,通常用于系统维护、备份、日志清理、定时发送邮件等任务。


01
Cron 的工作原理


Cron 运行在系统后台(作为守护进程),它不断监视系统的时间,并与系统的当前时间进行比较。一旦匹配到预定的时间规则,就会执行相应的命令或脚本。

Crontab 配置文件格式:

crontab 文件是一个文本文件,包含了一系列定时任务的调度规则。每一行代表一个单独的任务,其格式如下:

* * * * * /path/to/command- - - - -| | | | || | | | +---- Day of the week (0 - 6) (Sunday=0)| | | +------ Month (1 - 12)| | +-------- Day of the month (1 - 31)| +---------- Hour (0 - 23)+------------ Minute (0 - 59)

解释:

  • 分钟(0-59):任务执行的分钟数。

  • 小时(0-23):任务执行的小时数。

  • 日期(1-31):任务执行的日期。

  • 月份(1-12):任务执行的月份。

  • 星期几(0-6):任务执行的星期几,0 表示星期日,1 表示星期一,依此类推。

示例:

每天凌晨 3 点执行命令:

0 3 * * * /path/to/script.sh


每天凌晨 3 点钟执行 /path/to/script.sh。

每小时的第 15 分钟执行命令:

15 * * * * /path/to/script.sh

每小时的第 15 分钟执行 /path/to/script.sh。

每周一的凌晨 1 点执行命令:

0 1 * * 1 /path/to/script.sh

每周一凌晨 1 点执行 /path/to/script.sh。

每月的 1 号和 15 号的中午 12 点执行命令:

0 12 1,15 * * /path/to/script.sh

每月的 1 号和 15 号中午 12 点执行 /path/to/script.sh。

每 5 分钟执行一次命令:

*/5 * * * * /path/to/script.sh

每 5 分钟执行一次 /path/to/script.sh。


02
如何使用 Cron


  • 编辑 Cron 表:使用 crontab -e 命令来编辑当前用户的 cron 表。编辑后,系统会自动保存任务设置并生效。

  • 查看 Cron 表:使用 crontab -l 查看当前用户的所有定时任务。

  • 删除 Cron 表:使用 crontab -r 删除当前用户的所有定时任务。

  • 设置 Cron 表的文件:你也可以将一个已编辑好的 cron 表文件通过 crontab filename 命令导入。


03
Cron 的应用场景


  • 定时备份:定时备份数据库或文件系统。

  • 定时清理日志:定期清理老旧日志文件,防止磁盘空间被耗尽。

  • 自动化任务:定时发送邮件通知,自动化的爬虫任务等。

  • 定期检查系统状态:定时检查服务器的健康状态,执行负载检查等。


04
总结


Cron 是一个非常强大的定时任务调度工具,它通过简单的配置文件就能灵活地管理各种定时任务,广泛应用于系统管理、自动化运维、数据处理等场景。

今天的内容就分享到这儿,喜欢的朋友可以关注,点赞。有什么不足的地方欢迎留言指出,您的关注是我前进的动力!

END


扫码关注

一起积累后端知识
不积跬步,无以至千里
不积小流,无以成江海

喜欢此内容的人还喜欢

《Java面试题指南》回归啦~


一个阿里二面面试官必问的问题


Lambda表达式说爱你不容易


分享面试:mysql数据库索引失效的情况


Spring-Boot中一个不起眼的好工具StopWatch