設置linux服務器定時與時間服務器同步

在一些大公司常常出現這樣一個狀況:公司或一些機關單位的內部業務系統的應用服務器以及數據都是作的多機集羣部署並且基本都是linux系統, 並且都是內部網,不與外網通信的。這樣常常就會出現一個狀況,我發送任務的時間還晚於對方任務接收的時間。這樣常常令咱們頭痛,那爲何會出現這樣一個情 況呢,其實就是linux機器的系統沒有定時同步致使的,這個問題不只linux系統有,windows系統也會出現這樣的問題,好比咱們的 windows系統好久沒開過機了,那麼咱們就會發現windows系統上的時間不對了,可是爲何咱們常使用的windows系統就不會時間不一致呢, 由於咱們的windows系統會自動定時的與遠程標準的時間服務器同步時間,對出現的時間偏差進行校準。linux

可是這裏咱們說了,是內網的linux系統,不能與外界互聯網通信並且linux由於其開放性的緣由也有一個弊端,不少東西都沒有設置死,只能本身去設置,尤爲是黑乎乎的命令行系統。vim

這裏教你們一個方法就是設置linux自動定時的與某一個內部時間服務器同步,這樣就能夠保證多臺機器的時間始終一致。這裏主要有兩個問題:windows

1.如何實現與指定時間服務器同步,進行時間校準?bash

2.怎樣實現linux系統服務級的定時執行?服務器

好吧,下面依次解決這兩個問題就行了。首先假設咱們的時間服務器的ip地址爲192.168.1.10。ide

1.時間同步咱們用命令ntpdate,這個命令具體用法之後個人博客會專門講到這個問題,也能夠查看命令幫助。這裏先直接使用便可:spa

ntpdate -u 192.168.1.10

這樣就能夠與192.168.1.10的時間服務器同步了。orm

2.怎樣實現定時執行。這裏主要都是用到/etc/crontab實現定時。這個文件是linux的系統定時調度文件,在系統啓動後會加載這個文件。先看下這個文件:server

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  *  command to be executed

~
~
~
~
看看這個文件,前面四行能夠忽略無論。其實這個有個例子在這裏了,很是容易看懂,關鍵就是這一行:
*  *  *  *  *  command to be executed
第一個*表示分鐘,第二個*表示小時,第三個*表示一個月的那一天,第四個*表示月份,第五個*表示一週的那一天。其中要表示任何一個均可以就直接用*表示。前面五個位置之後就表示要執行的命令和參數。
因此定時執行已經掌握了,那麼咱們定時時間同步校準應該怎樣呢。

首先進入/etc/crontab文件
vim  /etc/crontab

插入一行定時執行同步代碼,假設咱們天天凌晨1點執行一次時間同步。即以下代碼:教程

00 1 * * * root  ntpdate -u 192.168.1.10

這樣咱們就設置好了linux服務器定時與時間服務器同步校準時間的任務了。bingo!是否是很簡單呢

若是有時間的話,之後會寫一下 ntpdate命令的使用以及時間服務器的搭建。

相關文章
相關標籤/搜索