小编a_g*_*est的帖子

ntpd 与 systemd-timesyncd - 如何实现可靠的 NTP 同步?

当我查询 NTP 守护进程的状态时,ntpdc -c sysinfo我得到以下输出:

system peer:          0.0.0.0
system peer mode:     unspec
leap indicator:       11
stratum:              16
precision:            -20
root distance:        0.00000 s
root dispersion:      12.77106 s
reference ID:         [73.78.73.84]
reference time:       00000000.00000000  Thu, Feb  7 2036  7:28:16.000
system flags:         auth monitor ntp kernel stats
jitter:               0.000000 s
stability:            0.000 ppm
broadcastdelay:       0.000000 s
authdelay:            0.000000 s
Run Code Online (Sandbox Code Playgroud)

这表示 NTP 同步失败。但是系统时间精确​​到 1 秒精度。当我在没有网络连接的情况下运行我的系统时,系统时间会偏离大约 10 秒。

这种行为表明系统有另一种同步时间的方式。我意识到还有systemd-timesyncd.service(配置文件位于/etc/systemd/timesyncd.conf)并timedatectl status给了我正确的时间:

      Local time: Thu 2016-08-25 10:55:23 CEST …
Run Code Online (Sandbox Code Playgroud)

ntpd ntp systemd-timesyncd

38
推荐指数
2
解决办法
4万
查看次数

当从另一个命令管道时,将原始模式空间限制为匹配的字符串

我有一个文本文件,我想更换内部的所有空间[[,并]]用连字符(括号中从来没有嵌套,总是匹配)。下面是一个例子:

$ cat test.txt 
abc [[foo]] xyz
abc [[foo bar]] xyz
abc [[foo bar baz]] xyz [[something else]]
Run Code Online (Sandbox Code Playgroud)

所以所需的输出是:

abc [[foo]] xyz
abc [[foo-bar]] xyz
abc [[foo-bar-baz]] xyz [[something-else]]
Run Code Online (Sandbox Code Playgroud)

我想我可以sed用来匹配括号内的字符串,然后使用该e标志sed再次运行结果以进行替换。然而,问题是不仅匹配的字符串被作为命令执行,而且整个模式空间(似乎是整行):

$ sed -E 's@(\[\[)(.+)(\]\])@sed -e "s/ /-/g" <<< "\1\2\3"@gpe' test.txt 
abc sed -e "s/ /-/g" <<< "[[foo]]" xyz
sh: 1: Syntax error: redirection unexpected

abc sed -e "s/ /-/g" <<< "[[foo bar]]" xyz
sh: 1: Syntax error: redirection unexpected

abc …
Run Code Online (Sandbox Code Playgroud)

linux sed string

3
推荐指数
1
解决办法
103
查看次数

标签 统计

linux ×1

ntp ×1

ntpd ×1

sed ×1

string ×1

systemd-timesyncd ×1