【树莓派不吃灰】命令篇⑧ 校准树莓派时间

news2024/12/27 19:34:31

在这里插入图片描述

目录

    • 1. systemd-timesyncd
      • 1.1 systemd-timesyncd 客户端
      • 1.2 systemd-timesyncd 服务
      • 1.3 systemd-timesyncd 配置文件
      • 1.4 timedatectl命令
    • 2. 校准时间
      • 2.1 查看时间状态
      • 2.2 校准时区
      • 2.3 没有时钟同步服务器,手工设置时间
        • 2.3.1 禁止ntp自动同步
        • 2.3.2 设置时间
        • 2.3.3 设置日期
        • 2.3.4 设置日期和时间
      • 2.4 再次启用NTP同步网络时间
      • 2.5 配置国内ntp服务器
      • 2.6 校准RTC

  • ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️
  • ❤️ 本篇创建记录 2022-11-20 ❤️
  • ❤️ 本篇更新记录 2022-11-20 ❤️
  • 🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言 📝
  • 🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请留言轰炸哦!及时修正!感谢支持!
  • 🔥 Arduino ESP8266教程累计帮助过超过1W+同学入门学习硬件网络编程,入选过选修课程,刊登过无线电杂志🔥

1. systemd-timesyncd

在Linux系统中存在两个时钟时间,分别是

  • 硬件时钟RTC(Real Time Clock,RTC)
  • 系统时钟(System Clock)

硬件时钟是指的在主板上的时钟设备,也就是通常可以在BIOS画面设置的时钟,即使关机状态也可以计算时间。

而系统时钟则是指Kernel中的时钟,其值是由1970年1月1日00:00:00 UTC时间至当前时间所经历的秒数总和。当Linux启动的时候,系统时钟会读取硬件时钟的设定,之后系统时钟独立运作。长时间运行两者可能将会产生误差。另外所有的Linux相关指令都是读取系统时钟指定的,如date。

debian使用 systemd-timesyncd 服务来做时间同步。

systemd-timesyncd是断点式更新时间,也就是时间不同立即更新,这样会对某些服务产生影响,所以在生产环境尽量不要用,在桌面环境或者是系统刚开机时来进行时间同步还是很好的。timesyncd 替代了 ntpd 的客户端的部分。默认情况下 timesyncd 会定期检测并同步时间。它还会在本地存储更新的时间,以便在系统重启时做时间单步调整。如果是虚拟机环境,应该把与主机时间同步功能关闭后在启用systemd-timesyncd,否则可能会有问题,systemd-timesyncd只能作为客户端,不能作为NTP服务器,要成为NTP服务器,可以安装chrony、ntpd,或者open-ntp。

1.1 systemd-timesyncd 客户端

systemd 提供了 systemd-timesyncd 客户端,它是一个用于跨网络同步系统时钟的守护服务。

它实现了一个 SNTP 客户端。

与NTP的复杂实现相比,这个服务简单的多,它只专注于从远程服务器查询然后同步到本地时钟。

在/etc/systemd/timesyncd.conf 中配置你的(时间)服务器。大多数 Linux 发行版都提供了一个默认配置,它指向发行版维护的时间服务器上。

systemd-timesyncd只会更改系统时间不会更改硬件时间,可以通过hwclock -w命令将系统时间同步到硬件时间。
|

1.2 systemd-timesyncd 服务

命令:

systemctl status systemd-timesyncd.service

在这里插入图片描述
默认的ntp服务器是 0.debian.pool.ntp.org。我们也可以改成国内地址。

1.3 systemd-timesyncd 配置文件

systemd-timesyncd 启动时会读取 /etc/systemd/timesyncd.conf 配置文件,内容如下:

pi@raspberrypi:~ $ cat /etc/systemd/timesyncd.conf 
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See timesyncd.conf(5) for details.

[Time]
#NTP=
#FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048

默认虽然上面的选项都处于注释状态,但是systemd-timesyncd还是会去默认的NTP服务器进行同步,如果要更改NTP服务器请修改上面的选项,选项解释如下:

  • NTP=
    一个空格分隔的NTP服务器列表, 可以使用主机名,也可以使用IP地址。在运行时, 此处设置的列表将与 systemd-networkd.service中已配置的NTP服务器列表合并在一起。 systemd-timesyncd 将会依次尝试列表中的每个NTP服务器, 直到同步成功为止。 如果为此选项设置一个空字符串, 那么表示清空所有此选项先前已设置的NTP服务器列表。 此选项的默认值为空。

  • FallbackNTP=
    一个空格分隔的NTP服务器列表,用作备用NTP服务器。 可以使用主机名,也可以使用IP地址。 如果所有已配置在 systemd-networkd.service中的NTP服务器以及上述 NTP= 中设置的NTP服务器都尝试失败, 那么将尝试此处设置的备用NTP服务器。 如果为此选项设置一个空字符串, 那么表示清空所有此选项先前已设置的NTP服务器列表。 若未设置此选项, 则使用编译时设置的默认备用NTP服务器(猜测就是0.debian.pool.ntp.org)。

  • RootDistanceMaxSec=
    最大可接受的"root distance"秒数(最大误差)。 默认值为 5 秒。

  • PollIntervalMinSec=, PollIntervalMaxSec=
    NTP消息的 最小/最大轮询间隔秒数。 PollIntervalMinSec= 必须不小于 16 秒。 PollIntervalMaxSec= 必须大于 PollIntervalMinSec= 。 PollIntervalMinSec= 默认为 32 秒, PollIntervalMaxSec= 默认为 2048 秒。

1.4 timedatectl命令

timedatectl命令可以查询和更改系统时钟和设置,你可以使用此命令来设置或更改当前的日期,时间和时区,或实现与远程NTP服务器的自动系统时钟同步。

常用命令:

命令作用
timedatectl 或者 timedatectl status查看系统时间状态
timedatectl set-time YY-MM-DD设定系统日期
timedatectl set-time HH:mm:SS设定系统时间
timedatectl set-time “YY-MM-DD HH:mm:SS”设定系统日期时间
timedatectl list-timezones显示系统的所有时区
timedatectl set-timezone xxxxx设定系统时区,例如 timedatectl set-timezone Asia/Shanghai
timedatectl set-local-rtc 0/1设定本地rtc时间计算方式,0表示使用utc时间,1表示本地时间
timedatectl set-ntp true 或者 falsetrue 启用NTP时间同步,false 禁用NTP时间同步

2. 校准时间

2.1 查看时间状态

输入命令:

timedatectl
或者
timedatectl status

pi@raspberrypi:~ $ timedatectl
               Local time: Sun 2022-11-20 09:04:48 GMT
           Universal time: Sun 2022-11-20 09:04:48 UTC
                 RTC time: n/a
                Time zone: Europe/London (GMT, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
pi@raspberrypi:~ $ 

参数说明:

  • Local time 当地时间
  • Universal time 伦敦时间
  • RTC time 硬件时间
  • Time zone 时区
  • System clock synchronized 和远程NTP服务器是否成功同步,显示为yes
  • NTP service NTP时间同步是否开启,active表示是,systemd-timesyncd服务为活动也就是开启了NTP时间同步
  • RTC in local TZ no表示硬件时钟设置为协调世界时(UTC),yes表示硬件时钟设置为本地时间

目前看这个时区Europe/London没有对上。

2.2 校准时区

timedatectl list-timezones | grep Asia/Shanghai

找到上海 Asia/Shanghai,然后校准时区

timedatectl set-timezone Asia/Shanghai

pi@raspberrypi:~ $ timedatectl list-timezones | grep Asia/Shanghai
Asia/Shanghai
pi@raspberrypi:~ $ timedatectl set-timezone Asia/Shanghai
==== AUTHENTICATING FOR org.freedesktop.timedate1.set-timezone ===
Authentication is required to set the system timezone.
Authenticating as: ,,, (pi)
Password: 
==== AUTHENTICATION COMPLETE ===
pi@raspberrypi:~ $ timedatectl
               Local time: Sun 2022-11-20 17:21:11 CST
           Universal time: Sun 2022-11-20 09:21:11 UTC
                 RTC time: n/a
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
pi@raspberrypi:~ $ 

这下子时间对上。

2.3 没有时钟同步服务器,手工设置时间

正常情况下我们依赖于ntp自动同步就好。

如果网络不好,没有时钟同步服务器,也可以手工设置时间。

timedatectl set-time YY-MM-DD HH:mm:SS

pi@raspberrypi:~ $ sudo timedatectl set-time 20:58:00
Failed to set time: Automatic time synchronization is enabled
pi@raspberrypi:~ $ 

直接设置无法成功(需要禁止掉ntp自动同步)。

2.3.1 禁止ntp自动同步

timedatectl set-ntp no

pi@raspberrypi:~ $ timedatectl set-ntp no
==== AUTHENTICATING FOR org.freedesktop.timedate1.set-ntp ===
Authentication is required to control whether network time synchronization shall be enabled.
Authenticating as: ,,, (pi)
Password: 
==== AUTHENTICATION COMPLETE ===
pi@raspberrypi:~ $ 

2.3.2 设置时间

设置Linux中的时间。只设置时间的话,我们可以使用set-time开关以及HH:MM:SS(小时,分,秒)的时间格式。

pi@raspberrypi:~ $ timedatectl set-time 20:58:00
==== AUTHENTICATING FOR org.freedesktop.timedate1.set-time ===
Authentication is required to set the system time.
Authenticating as: ,,, (pi)
Password: 
polkit-agent-helper-1: pam_authenticate failed: Authentication failure
==== AUTHENTICATION FAILED ===
Failed to set time: Access denied
pi@raspberrypi:~ $ sudo timedatectl set-time 20:58:00
pi@raspberrypi:~ $ timedatectl
               Local time: Sun 2022-11-20 20:58:05 CST
           Universal time: Sun 2022-11-20 12:58:05 UTC
                 RTC time: n/a
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no
pi@raspberrypi:~ $ 

2.3.3 设置日期

在Linux中设置日期。只设置日期的话,我们可以使用set-time开关以及YY-MM-DD(年,月,日)的日期格式。

pi@raspberrypi:~ $ sudo timedatectl set-time 2023-1-1
pi@raspberrypi:~ $ timedatectl
               Local time: Sun 2023-01-01 00:00:03 CST
           Universal time: Sat 2022-12-31 16:00:03 UTC
                 RTC time: n/a
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no
pi@raspberrypi:~ $ 

2.3.4 设置日期和时间

pi@raspberrypi:~ $ sudo timedatectl set-time "2023-1-1 11:11:11"
pi@raspberrypi:~ $ timedatectl
               Local time: Sun 2023-01-01 11:11:14 CST
           Universal time: Sun 2023-01-01 03:11:14 UTC
                 RTC time: n/a
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no
pi@raspberrypi:~ $ 

2.4 再次启用NTP同步网络时间

上面 2.3 关闭了ntp,正常情况下不应该关闭它,这样可以利用ntp同步网络时间。

pi@raspberrypi:~ $ timedatectl set-ntp true
==== AUTHENTICATING FOR org.freedesktop.timedate1.set-ntp ===
Authentication is required to control whether network time synchronization shall be enabled.
Authenticating as: ,,, (pi)
Password: 
==== AUTHENTICATION COMPLETE ===
pi@raspberrypi:~ $ timedatectl
               Local time: Sun 2023-01-01 11:15:51 CST
           Universal time: Sun 2023-01-01 03:15:51 UTC
                 RTC time: n/a
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
              NTP service: active
          RTC in local TZ: no
pi@raspberrypi:~ $ sudo systemctl restart systemd-timesyncd.service
pi@raspberrypi:~ $ timedatectl
               Local time: Sun 2022-11-20 19:35:35 CST
           Universal time: Sun 2022-11-20 11:35:35 UTC
                 RTC time: n/a
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
pi@raspberrypi:~ $ 

2.5 配置国内ntp服务器

更改 /etc/systemd/timesyncd.conf 文件

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See timesyncd.conf(5) for details.

[Time]
NTP=ntp.ntsc.ac.cn cn.ntp.org.cn
#FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048

重启systemd-timesyncd服务生效

pi@raspberrypi:~ $ sudo nano /etc/systemd/timesyncd.conf
pi@raspberrypi:~ $ sudo systemctl restart systemd-timesyncd.service
pi@raspberrypi:~ $ sudo systemctl status systemd-timesyncd.service

在这里插入图片描述

2.6 校准RTC

树莓派为了节约成本以及减小体积,没有板载的实时时钟(real-time clock,RTC),或者叫作硬件时钟。

在某些场合下,如果树莓派无法联网,但是它上面运行的程序又和时间紧密相关,要求系统时间是正确的,在这种情况下,我们就可以为树莓派添加一个外部的RTC,使之重启之后也能保持时间正确。

所以略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/20923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

敏感词检测库ToolGood.Words中IllegalWordsSearch类使用简介

C#开源敏感词检测库ToolGood.Words中的类IllegalWordsSearch为过滤非法词(敏感词)专用类,可设置跳字长度,支持全角转忽略大小、跳词、重复词、黑名单等功能,本文对照参考文献1,对该类的用法进行简要介绍。 …

k8s资源对象service-四层负载均衡详解

理论 工作原理如图: service的定义:是一组pod的逻辑组合,通过clusterIP和服务端口接收请求,并将这些请求代理至使用标签选择器来过滤符合条件的pod对象。 作用:服务发现和服务访问,为弹性变动且存在生命周期的pod对象提供了一个固定的访问接口。 service的代理类型:…

Vue动态切换class属性:数组法、对象法

需求&#xff1a;在style里创建好不同的属性&#xff0c;后期可以给标签动态绑定这些属性&#xff0c;也可以实现属性的切换方法&#xff1a;对象法、数组法事先创建好class属性&#xff1a; <style>.aa{}.bb{}.cc{} </style> 对象法&#xff1a; <body><…

矩阵(加速)。。。

我限定你在明天中午之前搞定这东西&#xff01;毕竟之前做过了欸。矩阵&#xff0c;一个看起来很神奇的东西&#xff0c;不过我不打算花太多的时间做这个&#xff0c;还是图论和数论好点儿&#xff0c;还要复习一下之前的数据结构和dp呢。那么先谈谈定义&#xff0c;定义一个矩…

kubernetes介绍与资源管理

#kubernetes介绍与资源管理 1应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个时代&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其它技术的参与 缺点&#xff1a;…

CMSC5713-IT项目管理之人力资源管理Human Resources Management

文章目录9.1. Introduction9.1.1. Motivation Theories9.1.2. Influence and Power9.1.3. Motivating Team9.2. Project Human Resource Management9.3. Human Resource Planning9.3.1. Project Organization Charts9.3.2. Responsibility Assignment Matrices9.3.2.1. RACI Ch…

锐捷BFD基础实验配置

目录 BFD与静态路由联动 BFD与静态路由联动&#xff08;单跳&#xff09; BFD与静态路由联动&#xff08;多跳&#xff09; BFD与动态路由联动 配置BFD与OSPF联动 配置BFD与BGP联动 BFD与静态路由联动 BFD联动静态路由注意事项 1、配置需要联动的静态路由时&#xff0c…

Java线程池

自定义线程池 1. 简介 1.1 引入原因 1. 一个任务过来&#xff0c;一个线程去做。如果每次过来都创建新线程&#xff0c;性能低且比较耗费内存 2. 线程数多于cpu核心&#xff0c;线程切换&#xff0c;要保存原来线程的状态&#xff0c;运行现在的线程&#xff0c;势必会更加耗…

idea创建spring boot工程及配置

目录 一、dea 创建spring boot工程 二、打包 三、启动配置文件 一、dea 创建spring boot工程 new project 选择Spring Initializr ,Type&#xff1a;选择Maven&#xff0c;Java 8, Packagin 选择Jar。然后点击next 添加依赖&#xff1a; 选择Sprint Boot版本&#xff0c;选…

差分约束算法

差分约束是为了解决这样一组不等式问题&#xff1a; 这个咋解决》我们来看 对于某个下标k而言&#xff0c;提取出关于其的所有不等式&#xff0c;&#xff08;其中xk在第一个),也就是 xk-x1<m1 xk-x2<m2 xk-x3<m3....对于这些不等式相当于是 xk取min(x1m1,x2m2,x3m3…

面试常问:HTTPS的加密过程 ----- 光明和黑暗的恩怨情仇

目录 关于运营商劫持 &#xff1a; 什么是运营商劫持?? 什么是运营商? 为什么要劫持? 如何劫持? 劫持的危害 互联网公司怎么办? HTTPS 什么是HTTPS 一些概念&#xff1a; HTTPS加密 1. 对称加密&#xff1a; 2. 非对称加密 3. 非对称加密对称加密 4. 加密…

基于java+ssm购物商城网站系统-计算机毕业设计

项目介绍 乐优购物商城是商业贸易中的一条非常重要的道路&#xff0c;可以把其从传统的实体模式中解放中来&#xff0c;网上购物可以为消费者提供巨大的便利。通过乐优购物商城这个平台&#xff0c;可以使用户足不出户就可以了解现今的流行趋势和丰富的商品信息&#xff0c;为…

请求跨域问题

在前端请求接口时&#xff0c;出现跨域是很常见的问题&#xff0c;跨域的解决方法也很多&#xff0c;但是目前通用的是以下两种方式&#xff1a; 开发环境生产环境在服务端配置 CORS在服务端配置 CORS配置开发服务器代理&#xff0c;比如 vite-server.proxy配置生产服务器代理…

Debezium的增量快照

GreatSQL社区原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本&#xff0c;使用上与MySQL一致。作者&#xff1a; 如常 Debezium Incremental snapshotting Introduction CDC&#xff08;Change-Data-Capture&#xff09;正…

Java之反射相关知识补充

Java之反射一、概述1、静态语言和动态语言1.1 静态语言1.2 动态语言2、Reflection(反射)2.1 介绍2.2 流程2.3 Java反射机制提供的功能2.4 优缺点&#xff08;1&#xff09;优点&#xff08;2&#xff09;缺点2.5 反射相关主要API2.6 示例二、反射相关操作1、获取Class类的实例1…

第十二节:String类【java】

目录 &#x1f4d8;1.1 字符串构造方法 &#x1f4d2;1.2 String对象怎样比较 &#x1f4dc;1.2.1 引用类型 比较的是引用中的地址。 &#x1f4c4;1.2.2 boolean equals(Object anObject) 方法&#xff1a;比较怕两个引用所指的对象当中的内容是否一致 &#x1f4d1;1.2…

企业级nginx使用

企业级nginx使用 nginx实现平滑升级 [rootlnmp nginx-1.16.0]# cd /usr/local/nginx/sbin/ [rootlnmp sbin]# ls nginx nginx.old [rootlnmp sbin]# ./nginx -v nginx version: nginx/1.16.0 [rootlnmp sbin]# ./nginx.old -v nginx version: nginx/1.14.2 [rootlnmp sbin]#操…

物联网开发笔记(49)- 使用Micropython开发ESP32开发板之控制RGB全彩LED模块

一、目的 这一节我们学习如何使用我们的ESP32开发板来控制RGB全彩LED模块。 二、环境 ESP32 RGB全彩LED模块 Thonny IDE 几根杜邦线 1&#xff0c;共阴极接线方法 2&#xff0c;共阳极接线方法 三、代码 1&#xff0c;亮指定的颜色&#xff0c;比如百度蓝。 我们使用取色…

万字长文,精美插图,带你玩转redis

资料下载&#xff1a; 链接: https://pan.baidu.com/s/1ue4Bnv4b4ifp0S0I_yOJ_w?pwdd9x9 提取码: d9x9 Redis学习笔记 1. 认识Redis 1.1 什么是NoSQL&#xff1f; SQL是关系型数据库&#xff0c;NoSQL是非关系型数据库 下面是几种非关系型数据库及其优缺点和应用场景。 分类…

[附源码]java毕业设计网上书店系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…