命令 | 作用 |
---|---|
sudo service cron status | 查看cron状态 |
sudo /etc/init.d/cron start | 启动cron |
sudo /etc/init.d/cron stop | 关闭cron |
sudo /etc/init.d/cron restart | 重启cron |
cron时间表
为cron时间表添加条目, 其格式为
min hour dayofmonth month dayofweek command
分布代表分 时 天 月 星期几 数值范围分别是 0-59: 0-23 :1-31: 1-12: 0-7
记住几个特殊符号的含义:
corn时间表例子:
可以用三字符的文本值(mon、tue、wed、thu、fri、sat、sun)或数值(0为周日,6为周六)
来指定dayofweek表项。
cron目录
如果脚本对精确的执行时间要求不高,用预配置的cron脚本更方便
$ ls /etc/cron.*ly /etc/cron.daily: 0anacron apt-compat cracklib-runtime logrotate mlocate popularity-contest update-notifier-common apport bsdmainutils dpkg man-db passwd ubuntu-advantage-tools /etc/cron.hourly: /etc/cron.monthly: 0anacron /etc/cron.weekly: 0anacron man-db update-notifier-common
比如,如果脚本每天运行一次,只要将脚本复制到daily目录,cron就会每天执行它【根据/etc/crontab下配置的时间】
anacron
缺点:cron可以执行一些定时任务,但是如果这个时间点来了,但是此时linux系统正在关机中,那么这个定时任务不能执行。即使系统再次开机,cron也不会去执行哪些已经错过了的程序。
解决:anacron,开机时会自动运行关机期间的作业。前提是这个程序位于cron目录之下。
应用场景:anacron 用于以天为单位的频率运行命令。它的工作与 cron 最大的不同在于,它假设机器不会一直开机。
anacron 工作原理
anacron 的任务被列在/etc/anacrontab
sudo cat /etc/anacrontab [sudo] password for ocean: # /etc/anacrontab: configuration file for anacron # See anacron(8) and anacrontab(5) for details. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin HOME=/root LOGNAME=root # These replace cron's entries 1 5 cron.daily run-parts --report /etc/cron.daily 7 10 cron.weekly run-parts --report /etc/cron.weekly @monthly 15 cron.monthly run-parts --report /etc/cron.monthly
ununtu 通过调用 run-parts 命令,定时运行3个目录下的所有脚本。
从上面可以看出,anacron 的运行频率的最小时间是天。 【cron是分钟】
$ ls -l /var/spool/anacron/ total 12 -rw------- 1 root root 9 Jun 1 10:25 cron.daily -rw------- 1 root root 9 May 27 11:01 cron.monthly -rw------- 1 root root 9 May 30 10:28 cron.weekly
anacron 程序使用自己的时间表来检查工作目录
时间表格式
period delay identifier command
anacron 会检查任务是否已经在period字段执行的时间被执行了,如果没有,则等待delay字段中指定的分钟数后,执行command字段中指定的命令。
一旦任务被执行,它会使用 job-id (时间戳文件名)字段中指定的名称将日期记录在 /var/spool/anacron 目录中的时间戳文件中。
cron VS anacron
cron是linux自带的守护进程,用来重复运行哪些被设定好了确定的运行时间的任务,如果机器处于关机状态并错过了任务执行时间,这个任务就无法执行了
crontab(cron table的简称)既可以指cron用来定期执行特定任务所需要的列表文件,又可以指用来创建、删除、查看当前用户(或者指定用户)的crontab文件的命令。
anacron不是守护进程,可以看做是cron守护进程的某种补充程序,anacron是独立的linux程序,被cron守护进程或者其他开机脚本启动运行,可以每天、每周、每个月周期性地执行一项任务(最小单位为天)。适合于可能经常会关机的机器,当机器重新开机anacron程序启动之后,anacron会检查anacron任务是否在合适的周期执行了,如果未执行则在anacron设定好的延迟时间之后只执行一次任务,而不管任务错过了几次周期。举个例子,比如你设定了一个每周备份文件的任务,但是你的电脑因为你外出度假而处于关机状态四周,当你回到家中开机后,anacron会在延迟一定时间之后只备份一次文件。由于发行版的不同,cron守护进程如何运行anacron会有所不同。
cron | anacron |
---|---|
它是守护进程 | 它不是守护进程 |
适合服务器 适合桌面/笔记本电脑 | |
可以让你以分钟级运行计划任务 | 只能让你以天为基础来运行计划任务 |
关机时不会执行计划任务 | 如果计划任务到期,机器是关机的,那么它会在机器下次开机后执行计划任务 |
普通用户和 root 用户都可以使用 | 只有 root 用户可以使用(使用特定的配置启动普通任务) |
cron 和 anacron 主要的区别在于 cron 能在那些持续运行的机器上有效地运行,而 anacron 是针对那些会在一天内或者一周内会关机的机器。
参考:
https://blog.csdn.net/qq_32693119/article/details/79816097
https://www.cnblogs.com/daxian2012/articles/2589894.html
https://www.cnblogs.com/zhoul/p/9931664.html
https://www.linuxprobe.com/cron-anacron-work.html
到此这篇关于shell之定时周期性执行脚本的方法示例的文章就介绍到这了,更多相关shell 定时周期性执行脚本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!