Linux 登录时从网络设置时间

Linux 登录时从网络设置时间

在我的 Ubuntu 10.04 上,我(一个用户,不是 root)可以发出

sudo net time set

而且效果非常好。

我希望盒子能更定期地获取净时间,或者至少在每次登录时获取。因此,我尝试添加净时间设置/etc/配置文件。失败了。我添加了如下节

user ALL=(ALL) NOPASSWD: /usr/bin/net

/etc/sudoers(使用维苏多)。没帮助。

我从未碰过计划任务所以我不知道如何添加 chron 标签。(依靠系统时间来重置系统时间似乎有些矛盾。)

  1. 做这个的最好方式是什么?
  2. 如果这是一项 cron 作业,我希望能够提供一个简单的示例。
  3. 同样的疑问,但针对的是命令服务 dhcp3-服务器重新启动

(是的,我的盒子通过 dhcp 获取其地址,但是它的 dhcp 服务器控制连接到高速摄像机的 4 个千兆 enet 卡。有时,在登录?启动时?dhcp 服务器让我只能看到 1 个摄像机。)

提前致谢。

答案1

(是的,我正在添加第二个答案。)

根据您的描述,您已经在 中添加了适当的行/etc/sudoers,但您并未sudo在 中调用/etc/profile

命令/etc/profile需要是:

sudo net time set

请注意,每次任何帐户登录时,这都会运行。这是您想要的,还是将命令放入更有意义$HOME/.profile

为了使其成为 cron 作业,您可以添加如下内容:

0 * * * * *      sudo net time set

到,比如说,foo.txt然后crontab foo.txt。之后,crontab -l将显示您当前的 cron 作业。使用给定的参数,作业将每小时运行一次;man 5 crontab并根据需要进行调整。那里可能因为 cron 作业在最小环境中运行,所以可能会出现一些问题,但我认为它不/usr/bin/net依赖于任何环境变量。

请注意,与 不同ntpd,这可能会导致系统时钟向后跳转,从而导致问题。

答案2

别打扰。

保持系统时钟同步的常用方法是ntpd。它应该在 Ubuntu 上默认安装和配置。您是否正在ntpd运行某个进程?您的系统时钟是否不正确?

编辑 :

从您对我的其他答案的评论来看,您似乎有一个可以使用的 NTP 服务器。

ntp您的系统上 应该已经安装了该软件。dpkg -l ntp验证。 您可能已经有一个ntpd守护进程在运行,但它无法工作,因为它不知道要与哪个服务器通信;ps -ef | grep ntpd确认这一点。

/etc/ntp.conf是ntp的配置文件,默认版本有:

server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org

注释掉这些行并添加:

server your.ntp.server

然后运行:

sudo /etc/init.d ntp restart

man ntpd了解更多详细信息,但这足以让您开始。

相关内容