1. Linux系统时间的设置
在Linux中设置系统时间,可以用date命令:
2 [root@node1 ~]# date 3 Tue Feb 25 20:15:18 CST 2014 4 //修改时间 5 [root@node1 ~]# date -s "20140225 20:16:00" #yyyymmdd hh:mm:ss 6 Tue Feb 25 20:16:00 CST 2014 7 //date 有多种时间格式可接受,查看date --help
2. Linux硬件时间的设置
硬件时间的设置,可以用hwclock或者clock命令。两者基本相同,只用一个就行,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。
2 [root@node1 ~]# hwclock --show 3 Tue 25 Feb 2014 08:21:14 PM CST -0.327068 seconds 4 //设置硬件时间 5 [root@node1 ~]# hwclock --set --date "20140225 20:23:00" 6 [root@node1 ~]# hwclock 7 Tue 25 Feb 2014 08:23:04 PM CST -0.750440 seconds
3. 系统时间和硬件时间的同步
同步系统时间和硬件时间,可以使用hwclock命令。
1 //以系统时间为基准,修改硬件时间 2 [root@node1 ~]# hwclock --systohc <== sys(系统时间)to(写到)hc(Hard Clock) 3 //或者 4 [root@node1 ~]# hwclock -w 5 //以硬件时间为基准,修改系统时间 6 [root@node1 ~]# hwclock --hctosys 7 //或者 8 [root@node1 ~]# hwclock -s
4. 不同机器之间的时间同步
为了避免主机时间因为长期运行下所导致的时间偏差,进行时间同步(synchronize)的工作是非常必要的。Linux系统下,一般使用ntp服务器来同步不同机器的时间。一台机器,可以同时是ntp服务端和ntp客户端。在生产系统中,推荐使用像DNS服务器一样分层的时间服务器来同步时间。
不同机器间同步时间,可以使用ntpdate命令,也可以使用ntpd服务。
使用ntpdate比较简单。格式如下:
1 [root@node1 ~]# ntpdate [NTP IP/hostname] 2 [root@node1 ~]# ntpdate 192.168.0.1 3 [root@node1 ~]# ntpdate time.ntp.org
但这样的同步,只是强制性的将系统时间设置为ntp服务器时间。如果CPU Tick有问题,只是治标不治本。所以,一般配合cron命令,来进行定期同步设置。比如,在crontab中添加:
0 12 * * * /usr/sbin/ntpdate 192.168.0.1
这样,会在每天的12点整,同步一次时间。ntp服务器为192.168.0.1。
或者将下列脚本添加到/etc/cron.hourly/,这样就每小时会执行一次同步:
#!/bin/bash
#
# $Id: sync-clock,v 1.6 2009/12/23 15:41:29 jmates Exp $
#
# Use ntpdate to get rough clock sync with department of Genome Sciences
# time server.
NTPDATE=/usr/sbin/ntpdate
SERVER="192.168.0.1 "
# if running from cron (no tty available), sleep a bit to space
# out update requests to avoid slamming a server at a particular time
if ! test -t 0; then
MYRAND=$RANDOM
MYRAND=${MYRAND:=$$}
if [ $MYRAND -gt 9 ]; then
sleep `echo $MYRAND | sed 's/.*\(..\)$/\1/' | sed 's/^0//'`
fi
fi
$NTPDATE -su $SERVER
# update hardware clock on Linux (RedHat?) systems
if [ -f /sbin/hwclock ]; then
/sbin/hwclock --systohc
fi