5

在服务器 CentOS 5(32 位)上运行此 shell 脚本时,我得到奇怪的时间输出。它是专用服务器,而不是 VPS。

时间.sh

#!/bin/bash    
for i in {1..10}
do
NOW=$(date +"%M:%S")
echo "$i $NOW"
done

结果是:

1 05:27    
2 05:09
3 05:09
4 05:09
5 05:27
6 05:09
7 05:27
8 05:09
9 05:27
10 05:09

你会看到一些迭代的时间跳跃。我不知道问题是什么。

我在另一台服务器上运行脚本。结果没问题。

1 52:58
2 52:58    
3 52:58
4 52:58
5 52:58
6 52:58
7 52:58
8 52:58
9 52:58
10 52:58
4

3 回答 3

0

我以前见过这样的行为,当时有多个 ntpd 进程正在运行,其中一个进程不知何故开始漂移。

检查 pidof ntpd 的输出并确认只列出了一个 pid。如果有多个,将它们全部杀死并重新启动 ntpd。

if (( $( pidof ntpd | wc -w ) != 1 )); then
  echo "Woah there - found multiple ntpd processes..."
  sudo killall ntpd
  sudo /etc/init.d/ntpd start
fi
于 2014-08-02T05:39:24.100 回答
0

这是 CentOS 论坛上提出的 CentOS 5.X 的问题。以下是其中一项包含一些细节的讨论:https ://www.centos.org/forums/viewtopic.php?t=14610

您看到的错误很可能在操作系统中,而不是在您的脚本中。如果可行,我建议尝试更新版本的 CentOS 或不同风格的 Linux。

于 2014-01-21T15:58:25.543 回答
0

我无法在我的 centos 7 上复制它。所以我只能提供与其他软件运行相同脚本的参考测量。

$ ./testclock.sh 
1 11:36
2 11:36
3 11:36
4 11:36
5 11:36
6 11:36
7 11:36
8 11:36
9 11:36
10 11:36

在这种情况下缺乏信息。bash 脚本本身不包含我可以看到的任何明显错误。因此,这个问题很可能是一个外部问题。您需要务实地处理这个问题,并将问题分解为组成部分。

然后,您需要开始找出抖动的机器和提供正确结果的机器之间的执行差异。这方面的例子是;

  • 机器上的软件安装是否不同?运行“rpm -qa”并比较列表和版本。如果它们确实不同,请检查这些特定软件以及介于两者之间的每个软件版本的更改列表和错误报告。检查所有软件,但从您知道与“日期”直接相关的二进制文件和库开始。
  • 硬件有区别吗?以什么方式?这会影响时间测量吗?
  • 时间测量是基于本地硬件还是网络服务?如果联网,是否所有池成员都设置为同一时间?两台服务器是否使用相同的池?
  • ntpd 和 ntpdate 都可以用来设置时间。Ntpd 通常会进行增量时间更正,而 ntpdate 会立即设置更正的时间。虽然这不太可能是原因,因为脚本运行得如此之快,但它仍应在检查列表中。
  • 如果一切都是重复的软件,网络和硬件,那么它可能是一个硬件问题。当然建议重新启动作为一次性事件的删除,即使在 linux 发行版上也是如此。
于 2017-02-23T11:35:34.203 回答