开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第20天,点击查看活动详情
一、命令详解
1.1【功能说明】
date命令用于显示当前的系统时间或设置系统时间。
1.2【语法格式】
[root@7bfe451a2fe1 /]# date --help
Usage: date [OPTION]... [+FORMAT]
or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Display the current time in the given FORMAT, or set the system date.
1.3【选项说明】
OPTION参数说明
-d 时间字符串设置指定字符串所描述的时间,而非当前时间-f 时间文件从日期文件中按行读入时间描述-r 文件显示指定文件的最后修改时间-s 日期时间设置系统时间-u显示或设置UTC时间-R显示时区
FORMAT日期格式,这里只列举常用的
%Y年份 如:2022%m月份 01-12%d每月的第几天%H小时 00-23%M分 00-59%S秒 00-60%N纳秒 000000000-999999999%s自UTC时间1970-01-01 00:00:00以来所经过的秒数,到现在为止10位数%n换行符%F显示日期 2022-12-12%T显示时间 12:23:30%c按CST格式显示时间 Thu Dec 15 17:45:07 2022
二、使用范例
2.1 基本用法-日期格式
# 按格式 yyyy-mm-dd H:M:S 来显示当前时间
date '+%Y-%m-%d %H:%M%S'
date '+%F %T'
# 日期与时间分两行显示
date '+%F%n%T'
2.2 获取相对时间
# 显示今天
date +%F
# 显示昨天
date +%F -d "-1day"
date +%F -d "yesterday"
# 显示前天
date +%F -d "-2day"
# 显示明天
date +%F -d "1day"
date +%F -d "tomorrow"
# 显示后天
date +%F -d "2day"
# 显示一个月后
date +%F -d "1month"
# 显示一年后
date +%F -d "1year"
# 20小时以后
date "+%F %T" -d "24hour"
# 30分钟之后的时刻
date "+%F %T" -d "30min"
# 30分钟之前的时刻
date "+%F %T" -d "-30min"
说明
- +号表示未来,-号表示过去
- year表示年,month表示月,hour表示小时,min表示分钟
2.3 转换日志的时间格式
# 生成的日志内容格式为
Sat May 19 13:40:02 CST 2022 is 1234567889
# 要求将其中的日期格式转换为yyyy-mm-dd H:M:S
2022-05-19 13:40:02
# 转换的命令为,这里用到了awk
awk -F "is" '{print "echo $(date -d \""$1"\" \"+%F %T\")", $2}' test.log | bash
2.4 设置日期
sudo date -s "2022-12-15 18:00:00"
说明:
- 要有root权限
2.5 查看时区
date -R
三、扩展知识
3.1 不同机器之间的时间同步
为了避免主机时间因为长期动作下产生时间偏差,进行时间同步的工作是非常必要的。linux系统下,一般使用ntp服务器来同步不同机器的时间。一台机器,可以同时是ntp服务器和ntp客户机。在网络中推荐例使用dns服务器一样的服务器来同步时间
# 同步时间
ntpdate time.ntp.org
# 一般配合cron今天放假,来里德定期同步设置,在crontab中添加
# 这样每天12点整就会同步一次时间
0 12 * * * * /usr/bin/ntpdate time.ntp.org
3.2 系统时间同步到硬件时间
# 查看硬件时间
hwclock --show
# 设置硬件时间
hwclock -s -d "12/12/22 00:00:00"
# 系统时间同步到硬件时间
sudo hwclock --systohc
四、命令总结
- 2022/12/16 简单的命令,每天可以多总结一些