我有一个奇怪的问题,我开始进行故障排除,想知道是否有人会提供任何有用的提示。
我每分钟执行一个 cronjob,它执行一个脚本并将输出附加到文件管理器上的文件中。该作业将自纪元(日期 +%s)以来的当前时间戳和当前正常运行时间(包括当前系统时间)打印到文件中。
脚本是:
DATE=`date +%s`
UPTIME=`uptime`
echo "$DATE;$UPTIME"
Run Code Online (Sandbox Code Playgroud)
我得到的是:
1325770921; 14:42:01 up 17 days
1325775379; 14:43:01 up 17 days
1325771041; 14:44:01 up 17 days
Run Code Online (Sandbox Code Playgroud)
请注意中间的时间戳是如何减少约 1 小时 15 分钟的。关于原因有什么想法吗?
我想在 ksh 或 bash 中编写一个 shell 脚本,如果特定文件超过 30 分钟,它会以 1 退出。(上次修改时间早于半小时)。在 Linux 或现代 unix 上会很容易,但我必须在 AIX 5.2 版本上这样做。
所以约束:
你能帮我解决这些限制吗?
从昨天(7 月 30 日)开始,我在 /var/log/syslog 中有以下内容
Dec 16 22:54:05 omap ntpdate[432]: step time server 91.189.94.4 offset 12052648.821465 sec
Run Code Online (Sandbox Code Playgroud)
ntpdate 91.189.94.4 从 7 月 30 日到 12 月 16 日“更正”了我的时钟!根据http://www.pool.ntp.org/scores/91.189.94.4,该服务器的关闭时间不超过 2 毫秒。
现在,我确实有一个脚本,它date在系统启动时调用该命令,以便以大约 1 秒的精度设置时钟。粗时间是从本地网络中读取的,并被date调用来设置时间。由于系统没有实时时钟,并且 NTP 可能无法使用 Internet 连接,因此我必须按照这些方式做一些事情。
我不确定 Linux 在没有可用时钟的情况下如何猜测初始时间,但我观察到它可能非常错误(这是合理的)。我对发生的事情的唯一想法是:
ntpdate 开始与 NTP 服务器通信,确定 3 月 15 日与实际日期相比有多大错误ntpdate 确定时钟慢了 12052648s,并添加了更正,假设时钟仍然在 3 月 15 日我们有一个 Debian 网络服务器,我正在尝试使用 ntpdate 来保持时间同步。
当我跑
ntpdate ntp0.cs.mu.oz.au
Run Code Online (Sandbox Code Playgroud)
我收到
16 Sep 10:55:36 ntpdate[21626]: step time server 128.250.36.2 offset 318.914011 sec
Run Code Online (Sandbox Code Playgroud)
没有错误,这应该是一件好事,我认为......
然而,当我再次检查时间时,它并没有改变。
我也无法使用手动设置时间
date --set 11:00:00
Run Code Online (Sandbox Code Playgroud)
所以我觉得还有其他问题。
任何意见,将不胜感激。
更新
对不起,流浪汉,这台机器是 XenServer VM,我设法忘记了。
更新主机时钟后,VM 时间现在是正确的。
感谢您的回复。谢谢。
我和 Bob 坐在办公室对面,他现在正在登录域,正在工作。我打开 AD Admin Center 并查看 Bob 的帐户,它告诉我他的最后一次登录日期是 2010 年 10 月 25 日中午。现在是 11/2/2010 早上 10 点。
我服务器上的日期是正确的,他电脑上的日期是正确的……这是怎么回事?
copy \\server01\E$\LogFiles\IVR\bcR\??120428.* \\LBC\workgroup\cs\ftp\Team\bcR\
copy \\server02\E$\LogFiles\IVR\bcR\??120428.* \\LBC\workgroup\cs\ftp\Team\bcR\
copy \\server03\E$\LogFiles\IVR\bcR\??120428.* \\LBC\workgroup\cs\ftp\Team\bcR\
copy \\server04\E$\LogFiles\IVR\bcR\??120428.* \\LBC\workgroup\cs\ftp\Team\bcR\
Run Code Online (Sandbox Code Playgroud)
这是我当前的脚本,我必须每周更改日期。我正在寻找一个脚本,它将查看今天的当前日期减去一天,并且可以修改 12 04 28。(年月日样本 120408)。我需要昨天的约会。此脚本在 DOS 中
在智利,这种情况非常特殊,因为夏令时变化的日子每年都不同……
是否有一个函数可以在给定的 UTC 时间获取给定日期的 UTC 偏移量?
我在Suse 文档中看到,类似的东西zdump -v /usr/share/zoneinfo/Chile/Continental使我能够通过多年进行所有更改,但工作仍然必须完成......有什么命令可以做到这一点?
或者/和是否有从给定时区到 UTC 的给定日期和时间的函数?而它的反面呢?
linux 如何处理这些变化?没有找到比 Suse 多的文档。
我做了这个date命令,它给出了以下输出
root@localhost:~$ date
Thu Dec 30 14:19:47 UTC 2010
Run Code Online (Sandbox Code Playgroud)
然后我使用date -s命令修改了日期,该命令给出了以下输出
root@localhost:~$ date -s "12/30/2010 JST 14:19:47"
Thu Dec 30 05:19:47 UTC 2010
Run Code Online (Sandbox Code Playgroud)
我注意到时间更改为比 UTC 时间晚 9 小时以准确显示 JST 时间。但是您可以看到时区仍然显示UTC。为什么它显示正确的时间和错误的时区?
谢谢
我在我的服务器上设置日期时遇到问题...
$ ls -la /etc | grep localtime
lrwxrwxrwx 1 root root 23 Mar 6 12:07 /etc/localtime -> /usr/share/zoneinfo/GMT
Run Code Online (Sandbox Code Playgroud)
出于某种原因,虽然时间17:31:06是 GMT,但时区后缀是 EST...
$ date
Tue Mar 6 17:31:06 EST 2012
Run Code Online (Sandbox Code Playgroud)
而且硬件时钟也搞砸了 - 10:32:12不是 EST:
$ hwclock --show
Tue 06 Mar 2012 10:32:12 PM EST -0.000276 seconds
Run Code Online (Sandbox Code Playgroud)
如果我将 hwclock 设置为系统时间或本地时间,它会错误地设置它:
$ hwclock --localtime
Tue 06 Mar 2012 10:34:22 PM EST -0.000190 seconds
$ date
Tue Mar 6 17:34:24 EST 2012
Run Code Online (Sandbox Code Playgroud)
知道发生了什么吗?
谢谢
Linux 服务器托管在 EST 时区。但我想将 date 命令的输出转换为 IST(印度标准时间 +5:30 小时)格式并在 shell 脚本中使用它。是否有任何选项可用于 date 命令来执行此操作或手动添加/减去小时数。