我的嵌入式计算机有一个问题,它没有单独的实时时钟,因此每次重新启动它时,它都会丢失当前日期的跟踪。这非常烦人,因为很多进程都依赖于检查文件时间戳。
我可以通过 ssh 连接到这台机器,并且可以在每次登录时手动设置日期,但这很乏味,而且容易忘记并对时间戳造成严重破坏。没有日期的机器是 ssh 服务器,我作为 SSH 客户端与我的 PC 连接。
我想知道的是如何在登录时自动设置远程服务器(嵌入式计算机)上的日期与 SSH 客户端(我的笔记本电脑)的日期。
我认为我应该通过设置客户端的 ssh_config 来执行 LocalCommand 来做到这一点,但从我在 man 中读到的内容来看,它不能按我想要的方式工作。该命令就像这样这个问题中描述的但有日期。
我认为的另一种方式是,我连接到远程计算机的用户的 .profile 将尝试连接回我的笔记本电脑并运行日期来更新其日期。
我应该如何实现这个目标?
答案1
您可以设置日期
ssh root@embedded "date -s '$(date)'"
(即在本地运行 date 并将输出提供给远程系统上的 date -s 。)
当然,您需要另一个 ssh 命令来打开交互式会话,因此可以使用密钥和 ssh-agent 或主连接来登录。
通常,我还建议使用 NTP,但如果计算机没有互联网连接,则需要在它可以访问的某些计算机上设置 NTP 服务器。可能是笔记本电脑。
从登录脚本运行 ntpdate/rdate/whatever 也是如此:您需要一台运行某些东西来为嵌入式系统提供时间服务的机器。
答案2
您可以在命令中在本地服务器或任何其他 Linux 服务器上创建脚本:
ssh root@server "date -s '$(date)'"
您可以根据需要每小时或每隔几分钟使用 cron 运行它。然而,这看起来并不是最好的做法。
您的嵌入式系统是否可以访问互联网或通过网络访问您拥有的任何其他 Linux 服务器?
实现您需要的最佳方法是在嵌入式系统上使用 NTP 客户端。它将从 NTP 服务器请求日期和时间数据,并根据它设置本地日期和时间数据。
您可以阅读如何安装 NTP 服务器和客户端这里。