UTC:協調世界時(英:Coordinated Universal Time ,法:Temps Universel Coordonné),又稱世界統一時間,世界標準時間,國際協調時間。英文(CUT)和法文(TUC)的縮寫不同,作爲妥協,簡稱UTC。協調世界時是以原子時秒長爲基礎,在時刻上儘量接近於世界時的一種時間計量系統。
NTP :network time protocol
軟件時鐘,1970/1/1 0:0:0 計算的總秒數
硬件時鐘,bios時間
server主機的port : UDP 123 端口
選擇多部time server 來做NTPserver,避免單臺壞了,時間無法同步
NTP 的階層概念, 當前主機向上層獲取時間,向下提供時間
ntp
tzdata :time zone data 提供各個市區對應的顯示格式
配置文件:
/etc/ntp.conf 主要的唯一的配置文件
/usr/share/zoneinfo/* 由tzdata提供,爲各時區的時間格式對應擋
/etc/sysconfig/clock 設定時區,與是否使用UTC時間鐘的配置文件
/etc/localtime 本地端的時間配置文件,會把clock中指定的時區 /usr/share/zoneinfo/
中的時間配置文件拷貝到/etc/localtime中
常用指令:
/bin/date 用於linux軟件時間的修改與顯示
/sbin/hwclock 用於bios時間的修改與顯示,一般是用date修改系統時間後,再用hwclock同步到bios中
/usr/sbin/ntpdate 客戶端時間校正工具
/usr/sbin/ntpd 提供NTP服務
實例:移居美國,如何修改時間
1 date 顯示當前時間,注意看時區
2 vim /etc/sysconfig/clock
zone="/America/New_York" 修改時區到紐約
3 cp /usr/share/zoneinfo/America/New_York /etc/localtime 複製紐約的時間格式對應當 到本地時間配置文件中
4 date 查看時區
/etc/ntp.conf
restrict [你的IP] mask [netmask_ip] [parameter]
parameter:
ignore 拒絕所有
nomodify 客戶端可以連接校正時間,但是不能用ntpc,ntpq修改時間服務器的參數
noquery 不提供網絡校時
notrap 不提供trap這個遠程事件登陸的功能
notrust 拒絕沒有認證的客戶端
特別注意: 如果沒有加參數,表示沒有設置任何限制
server [ip or hostname] [prefer]
設置上層ntp服務器,prefer 表示優先使用
driftfile [可以被ntpd寫入的目錄與檔案]
該文件 需要 使用完整的路徑文件名
不能是鏈接當
ntpd 這個daemon要有寫入權限
該文件所記錄的數值單位爲:百萬分之一秒
keys [keys_file]
客戶端還可以通過密鑰來認證
/etc/init.d/ntpd start
chkconfig ntpd on
tail /var/log/messages
netstat -tulnp | grep ntp
ntpstat
linux 手動校時的工作,date ,hwclock
date
date [option] [+format]
date [-u] MMDDhhmm[CC]YY.ss
hwclock [-rws]
網絡校時
ntpdate [-dv] [NTP IP/hostname]
ntpdate ip地址
記得不要在ntpserver 上運行 ntpdate 命令
ntpdate 腳本如下:
#!/bin/bash
#
# chkconfig: - 57 75
# description: set the date and time via NTP
### BEGIN INIT INFO
# Provides: ntpdate
# Required-Start: $network $local_fs $remote_fs
# Should-Start: $syslog $named
# Short-Description: set the date and time via NTP
# Description: ntpdate sets the local clock by polling NTP servers
### END INIT INFO
# Source function library.
. /etc/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
prog=ntpdate
lockfile=/var/lock/subsys/$prog
ntpconf=/etc/ntp.conf
ntpstep=/etc/ntp/step-tickers
start() {
[ "$EUID" != "0" ] && exit 4
[ "$NETWORKING" = "no" ] && exit 1
[ -x /usr/sbin/ntpdate ] || exit 5
[ -f /etc/sysconfig/ntpdate ] || exit 6
. /etc/sysconfig/ntpdate
[ -f $ntpstep ] && tickers=$(sed 's/#.*//' $ntpstep) || tickers=
if ! echo "$tickers" | grep -qi '[a-z0-9]' && [ -f $ntpconf ]; then
# step-tickers doesn't specify a server,
# use servers from ntp.conf instead
tickers=$(awk '$1=="peer"||$1=="server"{print $2}' $ntpconf | \
egrep -v '127\.127\.[0-9]+\.[0-9]+')
fi
if ! echo "$tickers" | grep -qi '[a-z0-9]'; then
echo $"NTP server not specified in $ntpstep or $ntpconf"
exit 6
fi
echo -n $"$prog: Synchronizing with time server: "
[ -z "$RETRIES" ] && RETRIES=2
retry=0
while true; do
/usr/sbin/ntpdate $OPTIONS $tickers &> /dev/null
RETVAL=$?
[ $RETVAL -eq 0 ] || [ $retry -ge "$RETRIES" ] && break
sleep $[10 * (1 << $retry)]
retry=$[$retry + 1]
done
[ $RETVAL -eq 0 ] && success || failure
echo
if [ $RETVAL -eq 0 ]; then
touch $lockfile
[ "$SYNC_HWCLOCK" = "yes" ] && \
action $"Syncing hardware clock to system time" \
/sbin/hwclock --systohc
fi
return $RETVAL
}
status() {
[ -f $lockfile ] || return 3
}
stop() {
[ "$EUID" != "0" ] && exit 4
rm -f $lockfile
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart|force-reload)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|status|restart|force-reload}"
exit 2
esac