如何同步两台计算机的日期时间?

如何同步两台计算机的日期时间?

我有两台电脑,但我无法更改其中一台电脑的时间,所以我必须将其中一台与另一台电脑同步。它有 QNX。我该怎么办?只有命令

答案1

最好的解决方案是安装网络时间协议 (NTP)在两台机器上都执行此操作,并让它们同步到同一台服务器。当然,如果您只能root访问其中一台,那么这不是一个选项。

假设你对两台机器都有 ssh 访问权限,那么machine1不能改变和machine2你的约会对象改变(作为用户root),你可以做这样的事情:

remote_time=`ssh user@machine1 date` && date -s "$remote_time"

您需要user在 上更改为您的用户名。如果您在 上machine1以 身份登录时运行此命令,则将其日期设置为与 相同的值。rootmachine2machine1

解释:

上述命令将ssh用户设置usermachine1并将 的结果date( 的当前时间和日期machine1)保​​存到变量 中$remote_time。如果ssh成功退出(&&),则命令的第二部分将 的时间machine2(运行命令的机器)设置为 的值$remote_time

注意:这两个命令需要一些时间才能完成。当我在我的机器上测试它们时,它们花了 0.3 秒,在你的机器上可能需要更多时间。请注意,如果您需要毫秒级的精度,则此方法不起作用。同样,如果您需要毫秒级的精度,仅有的可行的方法是将两台机器同步到 NTP 服务器。

答案2

如果您需要更高的精度并且由于某种原因不想使用 ntp,则可以对 @terdon 方法使用此修改。

偷懒方法。假设你在 ssh 连接上花费了 0.85 秒:

host1# b=`date +%s.%N`; a=`echo $b + 0.85|bc`;  ssh -4 -C user@host2 "date --set=\"@$a\""

更复杂:

host1# a=`ssh user@host2 date +%s.%N` ; b=`ssh user@host2 date +%s.%N`; c=`echo $b +$b -$a | bc ` ; echo $c ;ssh user@host2 "date --set=\"@$c\" --rfc-3339=ns" ;date --rfc-3339=ns


1514483228.883729365
2017-12-28 18:47:08.883729365+01:00
2017-12-28 18:47:08.790489767+01:00

作为先决条件,您需要让客户端和服务器准备好交换用户密钥以避免输入密码,并确保您具有 host1 机器的反向 DNS 解析,否则您的 ssh 连接将会滞后。

相关内容