学习背景
一般实际的项目中多多少少都可能会涉及到定时任务的场景,比如定时
nginx日志清理及备份
、tomcat日志滚动
、MySQL数据库自动备份
、批量解析数据文件导入导出
等等,定时任务执行的对象可能是shell脚本
等指令文件。而定时任务的实现,在Java工程当中,可以通过Spring Quartz
配置定时任务,在Linux服务器可以通过自带的crond
服务配置定时任务,方式有很多种,本文主要介绍Linux服务自带的定时服务,有crond
、anacron
、crontab
、anacrontab
,这四种服务相互联系,但又有一定的区别。
进入正文~
一、crond VS anacron
crond
是Linux操作系统自带的定时服务,自带守护进程,一般用于运行计划任务如系统备份
、日志分割级清理
。crond
服务更适合在那些24x7不间断运行的机器如服务器上运行的计划任务。anacron
则是较新版Linux操作系统自带的定时服务,CentOS 6.0后系统会自带anacron
服务,没有守护进程,需要依赖crond
服务运行,也是常用于运行计划任务如系统备份
、日志分割级清理
。但anacron
服务比较适合用在一天内或一周内会重启的机器上运行的计划任务。
主要区别对比:
crond | anacron |
---|---|
有守护进程,ps -ef|grep crond 查看 |
没有守护进程,依赖crond运行 |
二进制文件/usr/sbin/crond |
二进制文件/usr/sbin/anacron |
定时任务全局配置文件/etc/crontab |
定时任务全局配置文件/etc/anacrontab |
可配置定时任务的时间最小单位是分钟 |
可配置定时任务的时间最小单位是天 |
普通用户 可使用crontab -e 但/etc/crontab 也仅root 用户可配置 |
仅root 用户可配置 |
比较适合持续运行不关机的服务器 | 比较适合可能会一天内或一周内关机,重新开机后会重新运行缺失的计划任务的服务器 |
二、crond/crontab、anacron/anacrontab说明
2.1、crond
-
crond
服务可配置最小时间单位为分钟级
的定时服务,而anacron
服务仅提供