我有两台电脑,但我无法更改其中一台电脑的时间,所以我必须将其中一台与另一台电脑同步。它有 QNX。我该怎么办?只有命令
答案1
最好的解决方案是安装网络时间协议 (NTP)在两台机器上都执行此操作,并让它们同步到同一台服务器。当然,如果您只能root
访问其中一台,那么这不是一个选项。
假设你对两台机器都有 ssh 访问权限,那么machine1
你不能改变和machine2
你的约会对象能改变(作为用户root
),你可以做这样的事情:
remote_time=`ssh user@machine1 date` && date -s "$remote_time"
您需要user
在 上更改为您的用户名。如果您在 上machine1
以 身份登录时运行此命令,则将其日期设置为与 相同的值。root
machine2
machine1
解释:
上述命令将ssh
用户设置user
为machine1
并将 的结果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 连接将会滞后。