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不存在,则返回…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
python基础语法Ⅰ
python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器,来进行一些算术…...
python打卡day49@浙大疏锦行
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...
21-Oracle 23 ai-Automatic SQL Plan Management(SPM)
小伙伴们,有没有迁移数据库完毕后或是突然某一天在同一个实例上同样的SQL, 性能不一样了、业务反馈卡顿、业务超时等各种匪夷所思的现状。 于是SPM定位开始,OCM考试中SPM必考。 其他的AWR、ASH、SQLHC、SQLT、SQL profile等换作下一个话题…...
