Linux时间的操作的常见命令

date命令
使用方式 :

date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]

1.date :查看当前时间,结果如下:
[root@linuxlz ~]# date
2020年 10月 23日 星期五 13:35:49 CST

2.date '+%Y%M%D' 按照格式显示当前日期,结果如下:
[root@linuxlz ~]#  date "+%Y-%m-%d %H:%M:%S"
2020-10-23 13:36:20


3.date -s "xxx xx:xx:xx" 设置系统时间
[root@linuxlz ~]# date -s "20201023 13:37:00"
2020年 10月 23日 星期五 13:37:00 CST

 

linux的时间同步

下面我们来看一下我们在复杂环境下怎么把多台linux设置统一的正确环境:对-时间同步
命令:utpdate 时间服务器ip
ntpdate -u xx.xx.xx.xx 结果如下:


[root@linuxlz ~]# ntpdate -u ntp.api.bz
23 Oct 16:27:44 ntpdate[2695]: adjust time server 114.118.7.163 offset 0.000074 sec

[root@linuxlz ~]# date
2020年 10月 23日 星期五 16:28:06 CST


ps:若不加上-u参数, 会出现以下提示:no server suitable for synchronization found
-u:从man ntpdate中可以看出-u参数可以越过防火墙与主机同步;


ntp常用服务器:

 
中国国家授时中心 210.72.145.44
NTP服务器(上海) ntp.api.bz
美国 time.nist.gov
复旦 ntp.fudan.edu.cn
微软公司授时主机(美国) time.windows.com
北京邮电大学 s1a.time.edu.cn
清华大学 s1b.time.edu.cn
北京大学 s1c.time.edu.cn
台警大授时中心(台湾) asia.pool.ntp.org
 

时区操作

查看时区:
1.date "+%Z"
[root@linuxlz ~]# date "+%Z"
CST
 

设置时区:

复制相应的时区文件,替换系统默认时区 文件链接法
[root@linuxlz ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

 

将系统时间写入到硬件(bios)

1.hwclock
[root@linuxlz ~]# hwclock
2020年10月23日 星期五 16时29分33秒  -0.444517 秒

将系统时间写入硬件时间  
hwclock --systohc  

将硬件时间写入系统时间  
hwclock --hctosys  

将当前时间写入BIOS 避免重启后失效  
hwclock -w

 

定时任务

添加到crontab任务
crontab -e 

0 5 * * *  /usr/sbin/ntpdate  -u ntp.api.bz    #5点时间同步
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