15.4 【Linux】可唤醒停机期间的工作任务
15.4.1 什么是 anacron
anacron 并不是用来取代 crontab 的,anacron 存在的目的就在于我们上头提到的,在处理非24 小时一直启动的 Linux 系统的 crontab 的执行! 以及因为某些原因导致的超过时间而没有被执行的调度工作。
其实 anacron 也是每个小时被 crond 执行一次,然后 anacron 再去检测相关的调度任务有没有被执行,如果有超过期限的工作在, 就执行该调度任务,执行完毕或无须执行任何调度时,anacron 就停止了。
15.4.2 anacron 与 /etc/anacrontab
anacron 其实是一支程序并非一个服务!这支程序在 CentOS 当中已经进入 crontab 的调度,同时 anacron 会每个小时被主动执行一次。

基本上, anacron 的语法如下:

在我们的 CentOS 中,anacron 的进行其实是在每个小时都会被抓出来执行一次, 但是为了担心 anacron 误判时间参数,因此 /etc/cron.hourly/ 里面的 anacron 才会在文件名之前加个 0(0anacron),让 anacron 最先进行!就是为了让时间戳记先更新!以避免 anacron 误判crontab 尚未进行任何工作的意思。
接下来看一下 anacron 的配置文件: /etc/anacrontab 的内容好了:

我们拿 /etc/cron.daily/ 那一行的设置来说明好了。那四个字段的意义分别是:
天数:anacron 执行当下与时间戳记 (/var/spool/anacron/ 内的时间纪录档) 相差的天数,若超过此天数,就准备开始执行,若没有超过此天数,则不予执行后续的指令。
延迟时间:若确定超过天数导致要执行调度工作了,那么请延迟执行的时间,因为担心立即启动会有其他资源冲突的问题吧!
工作名称定义:这个没啥意义,就只是会在 /var/log/cron 里头记载该项任务的名称这样!通常与后续的目录资源名称相同即可。
实际要进行的指令串:通过 run-parts来处理的!
根据上面的配置文件内容,我们大概知道 anacron 的执行流程应该是这样的 (以 cron.daily为例):
1. 由 /etc/anacrontab 分析到 cron.daily 这项工作名称的天数为 1 天;
2. 由 /var/spool/anacron/cron.daily 取出最近一次执行 anacron 的时间戳记;
3. 由上个步骤与目前的时间比较,若差异天数为 1 天以上 (含 1 天),就准备进行指令;
4. 若准备进行指令,根据 /etc/anacrontab 的设置,将延迟 5 分钟 + 3 小时 (看START_HOURS_RANGE 的设置);
5. 延迟时间过后,开始执行后续指令,亦即“ run-parts /etc/cron.daily ”这串指令;
6. 执行完毕后, anacron 程序结束。
最后总结一下crond与anacron的关系:
1. crond 会主动去读取 /etc/crontab, /var/spool/cron/, /etc/cron.d/ 等配置文件,并依据“分、时、日、月、周”的时间设置去各项工作调度;
2. 根据 /etc/cron.d/0hourly 的设置,主动去 /etc/cron.hourly/ 目录下,执行所有在该目录下的可执行文件;
3. 因为 /etc/cron.hourly/0anacron 这个指令档的缘故,主动的每小时执行 anacron ,并调用 /etc/anacrontab 的配置文件;
4. 根据 /etc/anacrontab 的设置,依据每天、每周、每月去分析 /etc/cron.daily/,/etc/cron.weekly/, /etc/cron.monthly/ 内的可执行文件,以进行固定周期需要执行的指令。
也就是说,如果你每个周日的需要执行的动作是放置于 /etc/crontab 的话,那么该动作只要过期了就过期了,并不会被抓回来重新执行。但如果是放置在 /etc/cron.weekly/ 目录下,那么该工作就会定期,几乎一定会在一周内执行一次~如果你关机超过一周,那么一开机后的数个小时内,该工作就会主动的被执行。
15.5 重点回顾
系统可以通过 at 这个指令来调度单一工作的任务!“at TIME”为指令下达的方法,当 at进入调度后, 系统执行该调度工作时,会到下达时的目录进行任务;
at 的执行必须要有 atd 服务的支持,且 /etc/at.deny 为控制是否能够执行的使用者帐号;
通过 atq, atrm 可以查询与删除 at 的工作调度;
batch 与 at 相同,不过 batch 可在 CPU 工作负载小于 0.8 时才进行后续的工作调度;系统的循环例行性工作调度使用 crond 这个服务,同时利用 crontab -e 及 /etc/crontab 进行调度的安排;
crontab -e 设置项目分为六栏,“分、时、日、月、周、指令”为其设置依据;
/etc/crontab 设置分为七栏,“分、时、日、月、周、执行者、指令”为其设置依据;
anacron 配合 /etc/anacrontab 的设置,可以唤醒停机期间系统未进行的 crontab 任务!
相关文章:
15.4 【Linux】可唤醒停机期间的工作任务
15.4.1 什么是 anacron anacron 并不是用来取代 crontab 的,anacron 存在的目的就在于我们上头提到的,在处理非24 小时一直启动的 Linux 系统的 crontab 的执行! 以及因为某些原因导致的超过时间而没有被执行的调度工作。 其实 anacron 也是…...
[FPGA开发]解决正点原子Xilinx下载器无法下载、灯不亮的问题
问题描述 使用正点原子的Xilinx下载器下载时,电脑无法识别下载器,Vivado无法识别开发版。 问题解决 1.检查XIlinx下载器的灯是否亮起。 亮灯说明解决方法红灯亮起下载器可以连接到PC检查开发版是否供电正常蓝灯亮起下载器可以连接到PC,下…...
DP(区间DP)
石子合并 设有 N 堆石子排成一排,其编号为 1,2,3,…,N。 每堆石子有一定的质量,可以用一个整数来描述,现在要将这 N 堆石子合并成为一堆。 每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆…...
MySQL5.7保姆级安装教程
环境 Linux版本Mysql版本(待安装)CentOS 75.7 1、配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/ 目前MySQL官网下载的MySQL源安装后yum下载的MySQL是8.0版本,为了非必要的麻烦,直接提供MySQL5.7的…...
Linux:getopts解析命令行选项和参数
一.背景 当自己编写多个shell脚本进行嵌套调用时,会涉及到传参数问题,此时可以通过getopts设置参数输入与变量赋值. 二.用法 当使用 getopts 命令来解析命令行选项和参数时,你需要在脚本中创建一个循环,循环中使用 getopts 命令来获取每个选项及其参数…...
c语言——三子棋
基本框架 三个文件: 其中.cpp文件用于游戏具体函数设计,.h文件为游戏的函数声明,test.cpp文件用于测试游戏运行。 需要用到的头文件: #include <stdio.h> #include <stdlib.h>//rand&srand #include <time.h>//时间相…...
Android 广播阻塞、延迟问题分析方法
一、问题 最近遇到一个问题,发送广播(普通广播)给另一个应用,但是广播需要要等约1min后才收到。 二、分析原因 原因是系统有个广播接收器在接收到广播后处理了接近50s,所以阻塞了后面的广播处理。如果大家也出现了广…...
HTML JS 解析器出sql 中 的所有表名称,支持多条SQL
<!DOCTYPE html> <html> <head><title>SQL表名提取器</title><script src"https://code.jquery.com/jquery-3.6.0.min.js"></script><script>function extractTableNames() {// 获取输入的SQL语句var sql document…...
【雕爷学编程】Arduino动手做(05)---热敏电阻模块之的基本参数、模块特色、电原理与使用说明
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…...
MS31860T 国产 8通道串行接口低边驱动器 可PIN TO PIN替代DRV8860 高性价比
MS31860T 国产 8通道串行接口低边驱动器 可PIN TO PIN替代DRV8860 高性价比 产品简述 MS31860T 是一款 8 通道低边驱动器,包含 SPI 串口通信、 PWM斩波器配置、过流保护、短路保护、欠压锁定和过热关断功能,芯片可以读取每个通道的状态。MS31860T 可以…...
百度 amis 当成 UI 库用
百度 amis 当成 UI 库用 1.获取到这些 amis 对外提供的方法 var amisLib amisRequire(amis);// 获取到这些 amis 对外提供的方法。 2.js中使用百度amis中 confirm amisLib.confirm(amisLib 是否确认).then((confirmed) > {if (confirmed) {// 用户确认后执行的操作consol…...
质检工具(FindBugs、CheckStyle、Junit、Jmeter、Apifox)
1、Findbugs IDEA软件中可以装该插件,2018版本以前主要搜索FindBugs-IDEA 、2018版本以后主要搜索 SpotBugs。 1.1、FindBugs-IDEA安装及使用流程: 1.2、SpotBugs安装及使用流程: 2、Checkstyle IDEA软件中可以装该插件,所有版本的插件一致:CheckStyle 2.1、安装流程…...
MS31803TE 国产 四通道低边驱动器 PIN对PIN替代DRV8803
MS31803TE 国产 四通道低边驱动器 PIN对PIN替代DRV8803 产品简述 MS31803TE 是一个具有过流保护功能的 4 通道低边驱动器。MS31803TE 内置钳位二极管,用来钳制由电感负载续流产生的电压。MS31803TE 可以驱动单极步进电机、直流电机、继电器、螺线管或者其它负载。…...
wordpress数据表中标签和分类如何区分?
wordpress中标签和分类是什么关系怎么区分?最后有一个群的网友告诉了我文章ID和标签ID的关系是放在了wp_term_relationships表中,然后我百度了下这个表的结构和相关介绍,发现果然如此,先把文章保存起来: wp_term_rela…...
css3 实现文字横幅无缝滚动
css3 实现文字横幅无缝滚动 使用 css3 关键帧 keyframes 和 animation 属性实现文字横幅无缝滚动。 <template><div class"skiHallBanner"><div class"skiHallBanner-text"><span>{{ text }}</span></div></div>…...
unity 修改默认脚本
using System.Collections; using System.Collections.Generic; using UnityEngine; //***************************************** //创建人: xxxx //功能说明: //***************************************** #ROOTNAMESPACEBEGIN# public class #SCRI…...
【MySQL】增删查改基础
文章目录 一、创建操作1.1 单行插入1.2 多行插入1.3 插入否则替换更新1.4 替换replace 二、查询操作2.1 select查询2.2 where条件判断2.3 order by排序2.4 limit筛选分页结果 三、更新操作四、删除操作4.1 删除一列4.2 删除整张表数据 五、插入查询结果 CRUD : Create(创建), R…...
【vue+el-table+el-backtop】表格结合返回顶部使用,loading局部加载
效果图: 一. 表格结合返回顶部 二. 局部loading 解决方法: 一 返回顶部 target绑定滚动dom的父元素类名就可以了. 1.如果你的表格是 固定表头 的,那滚动dom的父元素类名就是 el-table__body-wrapper <el-backtop target".el-table__body-wrapper" :visibility…...
设计模式(4)装饰模式
一、介绍: 1、应用场景:把所需的功能按正确的顺序串联起来进行控制。动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。 当需要给一个现有类添加附加职责,而又不能采用生成子类的方法…...
Redis——通用命令介绍
Redis官方文档 redis官方文档 核心命令 set 将key和value存储到Redis中,key和value都是字符串 set key valueRedis中不区分大小写,字符串类型也不需要添加单引号或者双引号 get 根据key读取value,如果当前key不存在,则返回…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...
