Linux下更改系统时间的两种方法:

公司近来服务器测试,需要经常调整系统时间,一两台还好半,稍微多点,就各种纠结了,笔者这几台都把笔者快弄疯了。老大一句话:全部调快3分钟…过会又全部调慢5分钟……然后咱们干活的,各种date
01021511….你懂的.于是为了解放生产力–代码如下:

 一.手工配置

通常情况下linux服务执行

复制代码 代码如下:

    1 修改时间 #date -s 10:10:10

 

#!/bin/bash
# Author: MOS
# Script name: etime.sh
# Date & Time: 2013-01-02/21:47:58
# Version: 1.0.1
# Description:
#
#ntpserver
Tip=’time.nist.gov’
 
# sync now system time, yes: $3=”-u”  no: $3 is none.
if [[ “$3” == “-u” ]];then
    Tcmd=’/usr/bin/rdate’
    [ ! -x $Tcmd ] && echo ‘rdate not install!!’ && exit 1
    “$Tcmd” -s “$Tip”
fi
 
# Modf
if [[ -n “$2” &&  “$1” == ‘-‘ || “$1” == ‘+’ ]];then
    Func=$1
    [[ “$3” == “-s” ]] && Num=$2 || Num=$(($2*60))
    Ntime=`date +%s`
    Ltime=$(($Ntime$Func$Num))
    #Date=`/bin/date -d @”$Ltime” 2>/dev/null`
    #echo $Ltime
    Res=`date -d “1970-01-01 UTC $Ltime seconds” +%m%d%H%M%Y.%S`
    date
    date $Res
else
    echo ‘First,input + or -;Second,input a number.’
    exit 2
fi

    2 修改日期 #date -s 11/30/2007

#ntpdate -u 210.72.145.44 

笔者已上传到附件,下载后,先给个执行权限,然后放到系统路径:

    3 写入cmos #clock -w

就可以进行时间同步,但突然发现服务器上的时间竟然不准确了,执行ntpdate
-u 210.72.145.44命令提示如下信息:

复制代码 代码如下:

二.NTP服务自动校准

[root@localhost ~]# ntpdate 210.72.145.44 

[root@vpn1 scripts]# ls
casetup.sh  etime.sh
[root@vpn1 scripts]# chmod +x etime.sh
[root@vpn1 scripts]# mv etime.sh /bin/etime

   ntpdate time.nist.gov (time.stdtime.gov.tw / asia.pool.ntp.org)

 7 Jul 10:10:37 ntpdate[26186]: no server suitable for synchronization
found

用法格式如下:

ca88会员登录入口 1

210.72.145.44是中国国家授时中心的官方服务器,不应该出问题的。

复制代码 代码如下:

停到iptables还是不能进行同步。

command [+|-] number [option]

man
ntpdate看到如下的参数说明:
       -u      Direct  ntpdate  to  use  an  unprivileged port for
outgoing packets. This is most useful when behind a firewall that blocks
incoming traffic to privileged ports,
and  you  want  to  synchronize  with  hosts beyond the firewall. Note
that the -d option always uses unprivileged ports.

笔者写的急,代码并非精炼,慎用:譬如,时间同步失败未作处理,number位置的严格限制等,用法示例如下:

执行

1. 与时间服务器(time.nist.gov)同步 -u
,代码第九行,可根据您的位置,自行修改指定的时间服务器;如果您的rdate命令未安装至(/usr/bin/rdate),脚本会自动退出

[root@localhost ~]# ntpdate -u 210.72.145.44 

复制代码 代码如下:

 7 Jul 10:14:33 ntpdate[26462]: adjust time server 210.72.145.44
offset -0.001948 sec

[root@vpn1 scripts]# date
Thu Jan  3 00:13:25 CST 2013
[root@vpn1 scripts]# etime + 0 -u
Wed Jan  2 16:13:29 CST 2013   
#第一行输出为当前时间,使用-u参数时,时间更新顺序排在修改时间之前
Wed Jan  2 16:13:29 CST 2013    #第二行输出为修改为时间
[root@vpn1 scripts]# grep -n “time.nist.gov” /bin/etime
9:Tip=’time.nist.gov’

时间同步成功。

2. 以当前系统时间为准,调快10分钟,默认以分钟为单位

不确定路由器上是否关闭了udp的123端口就加上-u参数吧。

复制代码 代码如下:

 

[root@vpn1 scripts]# etime + 10
Wed Jan  2 16:24:47 CST 2013
Wed Jan  2 16:34:47 CST 2013

附加一下网络上查询到的其他的时钟服务器

3. 以当前系统时间为准,调慢20分钟,以秒为单位

(美国) 
time.nist.gov 
(复旦)(国内用户推荐) 
ntp.fudan.edu.cn 
微软公司授时主机(美国) 
time.windows.com 
台警大授时中心(台湾) 
asia.pool.ntp.org 
网通授时中心(北京) 
219.158.14.130 
time.twc.weather.com 
swisstime.ethz.ch 
ntp0.fau.de 
ntp3.fau.de 
time-a.nist.gov 
time-b.nist.gov 
time-nw.nist.gov 
nist1-sj.glassey.com 
NTP服务器(上海) 
ntp.api.bz

复制代码 代码如下:

修改linux的时间可以使用date指令
  date命令的功能是显示和设置系统日期和时间。
  输入date 查看目前系统时间。
  修改时间需要 date -功能字符 修改内容
  命令中各选项的含义分别为:
  -d datestr, –date datestr 显示由datestr描述的日期
  -s datestr, –set datestr 设置datestr 描述的日期
  -u, –universal 显示或设置通用时间
  时间域
  %H 小时(00..23)
  %I 小时(01..12)
  %k 小时(0..23)
  %l 小时(1..12)
  %M 分(00..59)
  %p 显示出AM或PM
  %r 时间(hh:mm:ss AM或PM),12小时
  %s 从1970年1月1日00:00:00到目前经历的秒数
  %S 秒(00..59)
  %T 时间(24小时制)(hh:mm:ss)
  %X 显示时间的格式(%H:%M:%S)
  %Z 时区 日期域
  %a 星期几的简称( Sun..Sat)
  %A 星期几的全称( Sunday..Saturday)
  %b 月的简称(Jan..Dec)
  %B 月的全称(January..December)
  %c 日期和时间( Mon Nov 8 14:12:46 CST 1999)
  %d 一个月的第几天(01..31)
  %D 日期(mm/dd/yy)
  %h 和%b选项相同
  %j 一年的第几天(001..366)
  %m 月(01..12)
  %w 一个星期的第几天(0代表星期天)
  %W 一年的第几个星期(00..53,星期一为第一天)
  %x 显示日期的格式(mm/dd/yy)
  %y 年的最后两个数字( 1999则是99)
  %Y 年(例如:1970,1996等)
  需要特别说明的是,只有超级用户才能用date命令设置时间,一般用户只能用date命令显示时间。
  例1:用指定的格式显示时间。
  $ date ‘+This date now is =>%x ,time is now =>%X ,thank you
!’
  This date now is =>11/12/99 ,time is now =>17:53:01,thank you
!
  例2:用预定的格式显示当前的时间。
  # date
  Fri Nov 26 15:20:18 CST 1999
  例3:设置时间为下午14点36分。
  # date -s 14:36:00
  Fri Nov 26 14:15:00 CST 1999
  例4:设置时间为1999年11月28号。
  # date -s 991128
  Sun Nov 28 00:00:00 CST 1999
  实例:设置时间伟2008年8月8号12:00
  # date -s “2008-08-08 12:00:00”
  修改完后,记得输入:clock -w
  把系统时间写入CMOS

[root@vpn1 scripts]# etime – 600 -s
Wed Jan  2 16:36:27 CST 2013
Wed Jan  2 16:26:27 CST 2013

ca88会员登录入口 2

4. 以当前世界时间为准,调快50分钟,只能以分钟为单位

复制代码 代码如下:

[root@vpn1 scripts]# etime + 50 -u
Wed Jan  2 16:28:25 CST 2013
Wed Jan  2 17:18:25 CST 2013

另附俩个暂时可用的时间服务器:

复制代码 代码如下:

time.nist.gov
rdate.darkorb.net
time-b.nist.gov
ntp.openxid.com

写东西不容易,觉得还凑合的话,给个赞吧 (^-^) ..

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注