Linux---对时/定时服务
文章目录
-
目录
文章目录
前言
一.对时服务
服务端配置
客户端配置
二.定时服务
单次定时任务
循环定时任务
前言
在当今信息化高速发展的时代,时间的准确性和任务的定时执行对于各种系统和服务来说至关重要。Linux操作系统,凭借其强大的功能和灵活的配置,成为了众多服务器和应用的首选平台。其中,对时服务和定时任务管理更是Linux系统中不可或缺的重要功能。
一.对时服务
Chrony是一个开源自由的网络时间协议 NTP 的客户端和服务器软件。它能让计算机保持系统时钟与时钟服务器(NTP)同步,因此让你的计算机保持精确的时间,Chrony也可以作为服务端软件为其他计算机提供时间同步服务。
NTP 是网络时间协议通过 udp 123 端口进行网络时钟同步。
安装Chrony软件
yum install chrony -y
服务端配置
(1)使用vim 编辑器打开/etc/chrony.conf,修改如下信息:
pool 2.rhel.pool.ntp.org iburst 修改为 pool 127.0.0.1 iburst
pool后面跟的是时间服务器,因为是服务端配置,自身就是时间服务器,所以时间服务器设置为本地IP:127.0.0.1
(2)指定允许访问的客户端
修改allow所在行,把注释符#去掉,并把后面的网段改为允许访问的网段
服务端配置成时间服务器后,只允许192.168.23.0/24的客户端进行时间同步,如果要允许所有客户端都能向此服务器进行时间同步,可以写成allow all
(3) 配置此台服务器为ntp服务器
#local stratum 10 删除注释符号#---> local stratum 10
local stratum 10
指示服务端在无法与外部时间源同步时,可以作为时间源为客户端提供服务。
(4)重启chronyd服务并设置开机自启
[root@localhost ~]# systemctl restart chronyd.service
[root@localhost ~]# systemctl enable chronyd.service
(5)防火墙开放chrony服务的端口123和323
firewall-cmd --add-port=123/udp --permanent
firewall-cmd --add-port=323/udp --permanent
#刷新防火墙规则
firewalld-cmd --reload#也可以直接关闭防火墙
systemctl stop firewalld.service
客户端配置
(1)使用vim 编辑器打开/etc/chrony.conf,修改如下信息:
pool 2.rhel.pool.ntp.org iburst 修改为 pool 192.168.23.145 iburst
时间源也可以使用国内的服务器如aliyun.com
pool 2.rhel.pool.ntp.org iburst 修改为 pool ntp.aliyun.com iburst
(2)重复服务端配置的第4和第5步
(3)显示系统当前配置的NTP服务器的状态信息并进行对时
chronyc sources
- * 表示chronyd当前同步到的源
- + 表示可接受的信号源,与选定的信号源组合在一起
- ? 指示已失去连接性或其数据包未通过所有测试的源。
-
Stratum 值:Stratum 是一个表示 NTP 服务器层级或准确度的数字。
-
Reach 值:Reach 值表示在过去 6 个测试周期内,时间源成功响应了多少次 Chrony 请求。
-
LastRx 值:LastRx 表示最后一次接收到该时间源数据的时间(以分钟计)
-
Last sample:这部分显示了最后一次与该时间源同步时的偏移量和其他统计数据。
二.定时服务
单次定时任务
at 计划任务是一次性的,到了指定时间点就开始执行指定的命令,执行完成后,不会重复执行这个命令
at 命令相关配置文件:
- /etc/at.allow,写在该文件的人可以使用at命令
- /etc/at.deny,黑名单
- 两个文件如果都不存在,只有root能使用
基础语法:
`at [参数] [时间] `
(1)查看系统中的计划任务
[root@localhost httpd]# at -l
[root@localhost httpd]# atq#计划任务保存在/var/spool/at目录下
[root@localhost ~]# ll /var/spool/at
总用量 0
drwx------. 2 root root 6 12月 1 22:32 spool
若两个命令都没有任何输出,说明当前系统并不存在计划任务。
(2)下面开始创建计划任务
at 日期 <按【Enter】键>
> 输入要执行的命令
Ctrl+D 提交
案例:要在2024年12月1日执行hostname命令
[root@localhost httpd]# at 2024-12-1
warning: commands will be executed using /bin/sh
at> hostname
at> <EOT>
job 1 at Sun Dec 1 22:17:00 2024
这里只指定了日期,并没有指定具体时间,那么,创建这个计划任务是几点几分,就会在设置日期的几点几分执行该任务。
at 时间点 日期 <按【Enter】键>
> 输入要执行的命令
Ctrl+D 提交
案例:在2024年12月1日22:25执行hostname命令
[root@localhost httpd]# at 22:32 2024-12-1
warning: commands will be executed using /bin/sh
at> hostname
at> <EOT>
job 4 at Sun Dec 1 22:32:00 2024
循环定时任务
at计划任务是一次性的,执行完成就结束,如果想定期执行任务,就要用到crontab了。
crontab相关配置文件
(1)查看指定用户的contab计划任务
步骤一:使用root用户查看自己有没有crontab计划任务
[root@localhost at]# crontab -l
no crontab for root
步骤二:使用root用户查看tom用户是否有crontab计划任务
[root@localhost at]# crontab -l -u zt
no crontab for zt
(2)创建计划任务
步骤一:创建计划任务命令是crontab -e,会打开一个临时文件,可使用vim编辑。
[root@localhost at]# crontab -e
crontab定义计划任务的语法如下 :
分 时 日 月 周 命令
案例1:每天上午7点执行hostname命令:
[root@localhost at]# crontab -e
crontab: installing new crontab
[root@localhost at]# crontab -l
0 7 * * * hostname
案例2:每周一到周五上午7点执行hostname命令
[root@localhost at]# crontab -e
crontab: installing new crontab
[root@localhost at]# crontab -l
0 7 * * 1-5 hostname
步骤二:为其它用户创建crontab任务
[root@localhost at]# crontab -e -u zt
总结
相关文章:

Linux---对时/定时服务
文章目录 目录 文章目录 前言 一.对时服务 服务端配置 客户端配置 二.定时服务 单次定时任务 循环定时任务 前言 在当今信息化高速发展的时代,时间的准确性和任务的定时执行对于各种系统和服务来说至关重要。Linux操作系统,凭借其强大的功能和灵活的…...

Agent
Agent核心 1、自主性 2、交互性 3、适应性 4、目的性 ReAct Reasoning and Acting范式 模型的推理过程分为 推理 Reason 和行动 Action 两个步骤,交替执行,直至获得最终结果。 推理 Reason 生成分析步骤,解释当前任务的上下文或状态…...
Oracle 数据库执行增删改查命令的原理与过程
摘要: 本文深入探讨当向 Oracle 数据库发送一个增删改查(CRUD)命令时,数据库内部的执行机制与详细过程。从用户发起命令开始,逐步剖析命令在 Oracle 数据库体系结构各组件中的流转、解析、优化以及执行路径,…...
HBase难点
查询优化 一次Scan会返回大量数据,客户端向HBase发送一次Scan请求,实际上并不会将所有数据加载到本地,而是通过多次RPC请求进行加载,防止客户端OOM。禁止缓存优化:批量读取数据时会全表扫描一次业务表,这种…...

Y20030023 PHP+thinkphp+MYSQL+LW+基于PHP的健身房管理系统的设计与实现 源代码 配置 初稿
基于PHP的健身房管理系统 1.项目摘要2. 系统开发的背景及意义3.项目功能4.界面展示5.源码获取 1.项目摘要 近年来,随着社会发展和科技进步,人们越来越重视健康养生并关注电子商务对日常交流方式的影响。随着健身行业消费人群的增加,竞争变得…...

mongodb下载与使用
下载地址: Install MongoDB Community Kubernetes Operator | MongoDB 1、安装MongoDB (5.0.30) 将压缩包移动到C:\Program Files 下,然后解压创建C:\data\db目录,mongodb 会将数据默认保存在这个文件夹以mongodb 中 bin目录作为工作目录&…...

【Linux基础】Linux基本指令
目录 1、pwd 指令 2、clear 指令 3、ls 指令 1、ls 显示当前路径下的文件或者目录名称 2、ls -l 显示当前路径下的文件或者目录的更详细的属性信息 3、ls -a :显示所有文件,包括隐藏文件 4、ls -d 将目录像文件一样显示,而不是显示其…...
【RISC-V CPU debug 专栏 3 -- Debugging RISC-V Cores】
文章目录 RISC-V 调试规范开源与多样性挑战调试规范的重要性外部调试支持的主要组件调试功能Lauterbach 的贡献RISC-V 调试规范 调试 RISC-V 内核涉及许多独特的挑战,这是由 RISC-V 的开源特性和多样化的生态系统所决定的。为了避免专有调试接口的泛滥,RISC-V 基金会内的工作…...

思科实现网络地址转换(NAT)和访问控制列表(ACL)和动态路由配置并且区分静态路由和动态路由配置。
实验拓扑(分为静态路由和动态路由两种) 静态路由互通 动态路由互通 实验背景 这个是想实现外网与内网的连接跟网络的探讨,最终实现互通以及使用并且在网络地址转换后能使用网络然后再这个基础上再配置访问控制列表和网络地址转换的的学习过程。 实验需了解的知识…...

基于 Python、OpenCV 和 PyQt5 的人脸识别上课打卡系统
大家好,我是Java徐师兄,今天为大家带来的是基于 Python、OpenCV 和 PyQt5 的人脸识别上课签到系统。该系统采用 Python 语言开发,开发过程中采用了OpenCV框架,Sqlite db 作为数据库,系统功能完善 ,实用性强…...

MySQL 复合查询
实际开发中往往数据来自不同的表,所以需要多表查询。本节我们用一个简单的公司管理系统,有三张表EMP,DEPT,SALGRADE 来演示如何进行多表查询。表结构的代码以及插入的数据如下: DROP database IF EXISTS scott; CREATE database IF NOT EXIST…...

【Leetcode】19. 删除链表的第N个节点
【Leetcode】19. 删除链表的第N个节点 1. 题目介绍2. 方法一:计算链表长度逻辑流程:代码复杂度分析 1. 题目介绍 题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,…...

flutter底部导航栏中间按钮凸起,导航栏中间部分凹陷效果
关键代码: Scaffold中设置floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked和extendBody: true, BottomAppBar中设置shape: const CircularNotchedRectangle() Scaffold(extendBody: true,//body是否延伸脚手架底部,在底部导航…...

<项目代码>YOLOv8 红绿灯识别<目标检测>
YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…...
HTMLHTML5革命:构建现代网页的终极指南 - 4. 使用元素
HTML&HTML5革命:构建现代网页的终极指南 4. 使用元素 大家好,我是莫离老师。 到目前为止,我们已经了解了 HTML 和 HTML5 的基础概念,并且选择了适合自己的开发工具。 今天,我们将迈出实际开发的第一步,…...
使用 Selenium 和 Python 爬取腾讯新闻:从基础到实践
使用 Selenium 和 Python 爬取腾讯新闻:从基础到实践 在这篇博客中,我们将介绍如何利用 Selenium 和 Python 爬取腾讯新闻的内容,并将结果保存到 CSV 文件中。本教程包含以下内容: 项目简介依赖安装实现功能的代码实现中的关键技…...

CAD深度清理工具-AVappsDrawingPurge9.0.0(2024.8.27版本) 支持版本CAD2022-2025-供大家学习研究参考
图形文件DWG体积很大:通常没有明显的数据。同时,还其他症状包括: (1)无法复制和粘贴图元。 (2)悬挂较长时间选择文本与 “特性”选项板上打开。 (3)图形文件需要很长时间…...

vue3+vite使用vite-plugin-electron-renderer插件和script-loader插件有冲突
报错信息:Error: Dynamic require of "path" is not supported 报错问题是在使用vite-plugin-electron-renderer插件不支持import动态引入,该报错信息并不准确,实际原因是vite-plugin-electron-renderer插件和script-loader插件有…...

领养我的宠物:SpringBoot开发指南
第2章 开发环境与技术 本章节对开发宠物领养系统需要搭建的开发环境,还有宠物领养系统开发中使用的编程技术等进行阐述。 2.1 Java语言 Java语言是当今为止依然在编程语言行业具有生命力的常青树之一。Java语言最原始的诞生,不仅仅是创造者感觉C语言在编…...

直击高频编程考点:聚焦新版综合编程能力考查汇总
目录 一、业务性编程和广度能力考查 (一)基本定义 (二)必要性分析 二、高频考查样题(编程扩展问法) 考题1: 用java 代码实现一个死锁用例,说说怎么解决死锁问题?(高…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...