热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

对linux下可唤醒停机期间工作任务的anacron的补充

网上的各种资料中往往对crontab讲的比较多,但是对anacron却是一笔带过。这篇文章就是重点来讲一下anacron的功能。举一个例子:我们在linux下的例行工作中设置每周日

网上的各种资料中往往对crontab讲的比较多,但是对anacron却是一笔带过。这篇文章就是重点来讲一下anacron的功能。


举一个例子:我们在linux下的例行工作中设置每周日早上9点对我的某个目录做一次清理,但是呢,恰好这周日早上停电了。那么,在这个时间段内,我们的linux根本不会工作,就更谈不上执行我们的例行工作了。也就是说,在下周日早上9点到来之前,我们的这个例行工作任务是不会主动执行的。这个时候就需要我们的anacron来唤醒停机期间的例行工作任务了。


首先,我们要明确一点的是,anacron和crontab并不是矛盾的,相反,anacron更是完善了crontab的工作,让我们的例行工作任务更加的完美。


anacron实际上是一个程序,以Centos 7为例:调用anacron程序的脚本位于/etc/cron.hourly这个目录中,也就是0anacron这个文件

0abacron位于/etc/hourly这个目录中,也就是说anacron是每小时被执行一次。那我们就用vim打开0anacron看一下吧!



0anacron中的具体内容

脚本中,可以看到,首先检查今天是否已经执行过anacron,如果已经执行过,就没必要再执行了。再检查是否此时电量不足,如果处于低电量状态,也不会执行anacron。说明anacron的执行情况还是很严密的哦!

那么脚本最后一句 /usr/sbin/anacron -s 又是什么意思呢?

答:anacron这个程序会根据 /etc/anacron 这个文件中的配置来决定该如何进行,具体的anacron的执行参数读者可以通过 man anacron来查询。


那么,此时我们当然要来看一看 /etc/anacron 这个配置文件到底写的什么喏!



/etc/anacron 中的具体内容

前面几行代码,就是来配置执行环境。下面的几行代码是最重要也要重点理解的:

#period in days    delay in munitus      job-identifier                 command

1                                  5                     cron.daily                nice run-parts  /etc/cron.daily

7                                 25                    cron.weekly            nice run-parts  /etc/cron.weekly

@monthly                  45                     cron.monthly          nice run-parts /etc/cron.monthly

以 1                                  5                    cron.daily              nice run-parts  /etc/cron.daily 这一行来讲解各个参数的意义:

(1)1  天数:anacron执行当下与时间戳记(/var/spool/anacron/nei的时间记录档)相差的天数,如果超过此天数1,就执行后面的nice run-parts  /etc/cron.daily,否则就不执行。

(2)5 延迟时间:即便是超过天数要执行后面的代码,也要延迟5分钟,可能在某些情况下立即启动会和其他地方造成冲突,可见这个考虑还是很周到的嘛!

(3)cron.daily 工作名称定义:和 /var/spool/anacron中记载该项任务的名称一样

(4)nice run-parts  /etc/cron.daily 实际要执行的指令:run-parts 表示执行后面/etc/cron.daily这个目录中的所有可执行文件。


那么,现在我们就以cron.daily为例,来说明anacron的执行流程吧:

1.首先,anacron启动后会参考 /etc/anacron这个配置文件,并且分析出cron.daily这项工作名称的天数为1;

2.然后来到 /var/spool/anacron/cron.daily 这个文件,取出最近一次执行anacron的时间;

3.将取出的最近一次执行anacron的时间与现在色时间作差,并与前面的天数1比较,如果超过1天,就准备执行指令;如果不超过,后面的流程不予考虑,到此结束;

4.准备执行指令时,还要根据前面的延迟时间作出延迟;

5.延迟时间到达后,就要真正地执行run-parts  /etc/cron.daily了,执行完毕后,anacron就程序结束了。

这里需要注意的就是,造成天数差异超过一天的原因:在非正常断电或者人为关机的情况下,/etc/cron.daily内的程序不能得到有效的执行,因此/var/spool/anacron/cron.daily内记录的时间就得不到更新,所以就造成了天数超过一天的差异。


/var/spool/anacron/下文件如下:



/var/spool/anacron/下的文件

看一看/var/spool/anacron/cron.daily下的内容:



/var/spool/anacron/cron.daily具体时间记录

通过上面的讲解,你是否对anacron的执行情况有更深的理解呢?

还有一点要注意的是,如果例行执行的任务放置在/etc/crontab中,那么过期之后在下一个周期之前,是不会被anacron执行的;但是,如果每周要执行的任务放置在 /etc/cron.weekly 目录下,那么这个工作几乎一定会在一周内被执行一次。(除非你一直不开机,那即便是anacron也没有办法喏!)


anacron和crontab是linux下非常好的东东哟,尽情享受它们带来的便利吧!


推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • 在Windows10系统上使用VMware创建CentOS虚拟机的详细步骤教程
    本文详细介绍了在Windows10系统上使用VMware创建CentOS虚拟机的步骤,包括准备条件、安装VMware、下载CentOS ISO文件、创建虚拟机并进行自定义配置、设置虚拟机的ISO与网络、进行安装和配置等。通过本文的指导,读者可以轻松地创建自己的CentOS虚拟机并进行相应的配置和操作。 ... [详细]
  • 本文主要介绍关于linux文件描述符设置,centos7设置文件句柄数,centos7查看进程数的知识点,对【Linux之进程数和句柄数】和【linux句柄数含义】有兴趣的朋友可以看下由【东城绝神】投 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Linux磁盘的分区、格式化的观察和操作步骤
    本文介绍了如何观察Linux磁盘的分区状态,使用lsblk命令列出系统上的所有磁盘列表,并解释了列表中各个字段的含义。同时,还介绍了使用parted命令列出磁盘的分区表类型和分区信息的方法。在进行磁盘分区操作时,根据分区表类型选择使用fdisk或gdisk命令,并提供了具体的分区步骤。通过本文,读者可以了解到Linux磁盘分区和格式化的基本知识和操作步骤。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
author-avatar
瑞铭与我_109
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有