查看當前時區
[root@svr-dsdb01 ~]# date -R Wed, 01 Sep 2021 09:37:21 +0800
設置時區
[root@svr-dsdb01 ~]# timedatectl set-timezone Asia/Shanghai
有兩種方式都可以實現從時間同步服務器同步時間的目的。
1、使用ntpdate命令,配合crontab定時執行時間同步。
2、使用ntpd服務。網上說這種更好,但屌絲公司嘛,不用這種也可以理解。
下面講一下第1種的實現方法。
ntpdate命令的使用比較簡單
[root@svr-dsdb01 ~]# ntpdate 172.7.0.146 [root@svr-dsdb01 ~]# ntpdate time.ntp.org
crontab要稍微復雜一點
先看一下配置文件的格式:
5 * * * * ls 指定每小時的第5分鍾執行一次ls命令 30 5 * * * ls 指定每天的 5:30 執行ls命令 30 7 8 * * ls 指定每月8號的7:30分執行ls命令 30 5 8 6 * ls 指定每年的6月8日5:30執行ls命令 30 6 * * 0 ls 指定每星期日的6:30執行ls命令[注:0表示星期天,1表示星期1,以此類推,也可以用英文來表示,sun表示星期天,mon表示星期一等。] 30 3 10,20 * * ls 每月10號及20號的3:30執行ls命令[注:“,”用來連接多個不連續的時段] 25 8-11 * * * ls 每天8-11點的第25分鍾執行ls命令[注:“-”用來連接連續的時段] */15 * * * * ls 每15分鍾執行一次ls命令 [即每個小時的第0 15 30 45 60分鍾執行ls命令 ] 30 6 */10 * * ls 每個月中,每隔10天6:30執行一次ls命令[即每月的1、11、21、31日是的6:30執行一次ls命令。]
特殊字符 | 含義 |
*(星號) | 代表任何時刻都接受的意思。舉例來說,0 12 * * * command 日、月、周都是*,就代表着不論何月、何日的禮拜幾的12:00都執行后續命令的意思。 |
,(逗號) | 代表分隔時段的意思。舉例來說,如果要執行的工作是3:00與6:00時,就會是:0 3,6 * * * command 時間還是有五列,不過第二列是 3,6 ,代表3與6都適用 |
-(減號) | 代表一段時間范圍內,舉例來說,8點到12點之間的每小時的20分都進行一項工作:20 8-12 * * * command 仔細看到第二列變成8-12.代表 8,9,10,11,12 都適用的意思 |
/x(斜線) | 代表每隔x【單位】的意思,例如每五分鍾進行一次,則:*/5 * * * * command 用*與/5來搭配,也可以寫成0-59/5,意思相同 |
現在開始設置服務器的時間同步:
查看當前的定時任務
[root@svr-dsdb01 ~]# crontab -l */3 * * * * flock -xn /var/log/pg_iscsi_monitor.lock -c '/root/script/pg_iscsi_monitor.sh >/dev/null 2>&1' */3 * * * * flock -xn /var/log/pps_iscsi_monitor.lock -c '/root/script/pps_iscsi_monitor.sh >/dev/null 2>&1'
編輯定時任務,增加一條時間同步命令
[root@svr-dsdb01 ~]# crontab -e
進入了vi編輯器,在最后增加如下一行,注意最后-w后面要留一個空格:
*/30 * * * * /usr/sbin/ntpdate 172.7.0.146 && /sbin/hwclock -w
以上一行表示,每隔30分鍾從授時服務器同步一次時間,並將系統時間同步到硬件時間(BIOS)
hwclock命令
hwclock -s 將硬件時間同步到系統時間
hwclock -w 將系統時間同步到硬件時間
hwclock -v 查看版本