首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在时钟计时时运行脚本

在时钟计时时运行脚本
EN

Stack Overflow用户
提问于 2021-12-01 10:38:10
回答 2查看 426关注 0票数 0

我需要启动一个特定的服务后,系统时钟正确的步进。

系统时间由时间同步(chronyd (chrony) version 3.5 (+CMDMON +NTP +REFCLOCK +RTC -PRIVDROP -SCFILTER -SIGND +ASYNCDNS -SECHASH +IPV6 -DEBUG))维护。

时间设置(如果相关的话)是:

代码语言:javascript
运行
复制
server 192.168.100.1 trust minpoll 2 maxpoll 4 polltarget 30
refclock PPS /dev/pps0 refid KPPS trust lock GNSS maxdispersion 3 poll 2
refclock SOCK /var/run/chrony.sock refid GNSS maxdispersion 0.2 noselect
makestep 0.1 -1
driftfile /var/lib/chrony/drift
rtcsync

“正常跟踪状态”的示例是:

代码语言:javascript
运行
复制
/ # chronyc tracking
Reference ID    : C0A86401 (192.168.100.1)
Stratum         : 2
Ref time (UTC)  : Wed Dec 01 11:52:08 2021
System time     : 0.000004254 seconds fast of NTP time
Last offset     : +0.000000371 seconds
RMS offset      : 0.000011254 seconds
Frequency       : 17.761 ppm fast
Residual freq   : +0.001 ppm
Skew            : 0.185 ppm
Root delay      : 0.000536977 seconds
Root dispersion : 0.000051758 seconds
Update interval : 16.2 seconds
Leap status     : Normal

而“不同步”(初始)状态是:

代码语言:javascript
运行
复制
/ # chronyc tracking
Reference ID    : 00000000 ()
Stratum         : 0
Ref time (UTC)  : Thu Jan 01 00:00:00 1970
System time     : 0.000000000 seconds fast of NTP time
Last offset     : +0.000000000 seconds
RMS offset      : 0.000000000 seconds
Frequency       : 0.000 ppm slow
Residual freq   : +0.000 ppm
Skew            : 0.000 ppm
Root delay      : 1.000000000 seconds
Root dispersion : 1.000000000 seconds
Update interval : 0.0 seconds
Leap status     : Not synchronised

我似乎记得,无论何时层级更改,crony都可以调用脚本,但我找不到引用。

在任何情况下:是否有任何方法指示crony运行脚本/程序,或者在获得/丢失有效服务器跟踪时发送一些信号?

我目前所依赖的是一个相当丑陋的东西:while chronyc tracking | grep -q "Not synchronised"; do sleep 1; done,但最好是由chronyd来发出积极的信号。

详细信息:

  • 系统是一个(相对)小的IoT设备,运行Linux (Yocto)。
  • 它没有RTC (它总是以时钟设置为Epoch开始)。
  • 系统与因特网没有连接(最初)。
  • 系统与具有全球导航卫星系统接收器的设备有连接,并由此得出正确的时间。
  • 全球导航卫星系统可能需要很长一段时间(有时是“非常”)才能获得修正,从而可以传播时间。
  • 在某一时刻,时间终于得到了正确的时间和步骤,系统时钟。在这之后,我需要启动一个服务(或者运行一个脚本或其他什么)。
  • 我目前正在轮询chronyc tracking和解析状态,但这并不是很好。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-23 11:08:16

我也想做同样的事,却空手而归。

然而,我确实找到了chronyc waitsync,这似乎是进行轮询的内置方式,而不需要显式地解析和睡眠。这对于我的情况来说已经足够好了,因为我只需要延迟一个启动操作。

该命令的存在还暗示(尽管无法证明)直接触发可能不受支持。如果触发是一个困难的要求,rsyslogd 帮助

顺便说一句,一个人只能欣赏系统爱好者的热情,即使他们的答案显然是完全不相关的,也能传播他们的爱。

显然,目标系统不使用systemd。问题是关于chronyd,而不是关于systemd-timesyncd,而systemd-time-wait-sync.service只适用于后者。

票数 0
EN

Stack Overflow用户

发布于 2021-12-01 21:21:34

建议调查systemd-time-wait-sync.service这里

建议的技术是使用systemd服务单元等待systemd-time-wait-sync.service同步内核时钟。

在服务单元文件或管道中使用after命令。这些技术被描述为这里这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70182708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档