感谢支持
我们一直在努力

Linux 日期和时间的那些事儿

Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟两种。系统时间是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的那个主板硬件时钟,当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作

如何查看系统的日期和时间?

$ date
Tue Oct 16 11:18:32 CST 2012

date支持格式化输出,如

$ date +”%r %n%a %b %d, %Y”
11:27:14 AM
Tue Oct 16, 2012

显示指定的日期与时间

$ date -d “+1 month”
Fri Nov 16 11:31:10 CST 2012

详见: http://www.linuxidc.com/Linux/2012-11/74918p2.htm

显示日历

$ cal
October 2012
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

详见: http://www.linuxidc.com/Linux/2012-11/74918p3.htm

如何修改系统日期和时间?

使用date命令的-s参数.

#date -s 12/4/2011 #date -s 14:15:00

date -s ’2011/12/4 14:15:00′

如何查看硬件时钟?

# hwclock –show
Tue 16 Oct 2012 09:19:57 PM CST -0.844514 seconds

如何设置硬件时钟?

# hwclock –set –date=”09/17/2003 13:26:00″

# hwclock –hctosys //硬件时钟与系统时钟同步

# hwclock –systohc //系统时钟与硬件时钟同步

硬件时钟也可以通过clock命令来查看和设置.

时区

UTC Universal Time Coordinated,世界标准时间

GMT Greenwich Mean Time,格林尼治时间

CST China standard Time ,中国标准时间

比如设置设置时区为CST

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

NTP

Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正,且可介由加密确认的方式来防止恶毒的协议攻击。

官方网站: http://www.pool.ntp.org/en/

可使用ntpdate同步,服务器可加crontab

# ntpdate cn.pool.ntp.org

使用time命令获取命令执行时间

$ time ls -Rl dir/* 
[...] 
real 0m22.156s 
user 0m1.652s 
sys 0m4.772s

Linux 文件的时间概念

(1) modification time (mtime,修改时间),是文件内容修改的时间,用命令ls -l默认显示的就是这个时间.

(2)status time (ctime,状态时间):当一个文件的状态改变时,这个时间就会改变,例如更改了文件的权限与属性等,它就会改变。

(3)access time (atime,访问时间):当读取文件内容时,就会更改这个时间,例如使用cat 去读取/etc/man.config,那么该文件的atime就会改变。

可使用 ls -l –time=atime –full-time 和 ls -l –time=ctime –full-time 来查看.另外可以用stat命令来查看.

$ stat README.md
File: `README.md’
Size: 25 Blocks: 8 IO Block: 4096 regular file
Device: 809h/2057d Inode: 2755432 Links: 1
Access: (0664/-rw-rw-r–) Uid: ( 1000/ diglike) Gid: ( 1000/ diglike)
Access: 2012-09-21 15:36:42.238294913 +0800
Modify: 2012-09-21 15:35:31.626295155 +0800
Change: 2012-09-21 15:35:31.750295154 +0800
Birth: –
$ ls –full-time README.md
-rw-rw-r– 1 diglike diglike 25 2012-09-21 15:35:31.626295155 +0800 README.md
$ ls –time=atime –full-time README.md
-rw-rw-r– 1 diglike diglike 25 2012-09-21 15:36:42.238294913 +0800 README.md
$ ls –time=ctime –full-time README.md
-rw-rw-r– 1 diglike diglike 25 2012-09-21 15:35:31.750295154 +0800 README.md

如何修改Linux文件的访问时间和修改时间?

可以使用touch命令来修改.

-a 参数只修改atime

-m 参数只修改mtime

-c 参数不创建文件

-t [[CC]YY]MMDDhhmm[.ss] 修改为指定时间

如:

touch -t 1210011224.30 abc

touch -d “5 days ago” abc

定制ls输出的日期和时间格式

每个Linux系统可能不一样,由TIME_STYLE 环境变量控制.以下是Ubuntu 12.04的默认输出格式:

$ll README.md

-rw-rw-r– 1 diglike diglike 25 Sep 21 15:35 README.md

我修改后显示为

$ ll README.md
-rw-rw-r– 1 diglike diglike 25 2012-09-21 15:35 README.md

因为我在.bashrc 中添加了export TIME_STYLE=long-iso

还可以定制如

$ export TIME_STYLE="+%Y-%m-%d %H:%M:%S %z"

Date

目录
1 功能
2 语法
3 参数
4 相关命令
5 实例

功能

显示、修改系统日期时间。

语法

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

参数

-d <字符串>或–date=<字符串> 显示字符串所指的日期与时间,字符串前后必然加上双引号。

date -d YYYY-mm-dd

指定时间,日期是今天:

date -d HH:MM:SS

指定日期时间:

date -d "YYYY-mm-dd HH:MM:SS"

-s <字符串>或–set=<字符串> 根据字符串来设置日期与日期,字符串前后必然加上双引号。

-u 显示GMT(格林威治标准时间)

常用FORMAT

%a 星期的简要名称

%A 星期的完整名称

%b 月份的简要名称

%B 月份的完整名称

%c 显示系统的日期与时间,其格式为%a %b %e %T %Z

%d dd格式的日期,01-31

%D 日期(含年月日),其格式为%m/%D/%Y

%e 该月中的第几天

%Y YYYY格式的年份(Year)

%m mm格式的月份,01-12

%H HH格式的小时数,00-23

%I 小时,以0-12来表示

%M MM格式的分钟数,00-59

%S SS格式的秒数,00-59

%F YYYY-mm-dd格式的完整日期(Full date),同%Y-%m-%d

%T HH-MM-SS格式的时间(Time),同%H:%M:%S

%s 自1970年以来的秒数。C函数time(&t) 或者Java中 System.currentTimeMillis()/1000, new Date().getTime()/1000

%w 星期几,0-6,0表示星期天

%u 星期几,1-7,7表示星期天

%j 该年中的第几天

%n 在显示时,插入新的一行

%P 上午或下午(AM/PM)

%U 该年中的第几周

%w 该周的第几天,0表示周日

相关命令

clock hwclock

实例

# date 
Sat Dec  3 14:04:21 CST 2011

显示当前的日期和时间。

# date -u

Sat Dec 3 06:06:08 UTC 2011

以格林威治标准时间显示当前系统日期与时间。

# date +%U
48

本周是今年的第几周

# date
Sat Dec  3 14:12:22 CST 2011
# date -s '2011/12/4 14:15:00'
Sun Dec  4 14:15:00 CST 2011
# date
Sun Dec  4 14:15:01 CST 2011
#clock -w

修改系统日期为2011年12月4日,并将当前系统时间写入CMOS中去。也可以分两步:

#date -s  12/4/2011
#date -s  14:15:00
#clock -w
# date -d tomorrow +%Y%m%d 
20111204

按指定的格式显示明天的日期

Note: 按指定格式显示日期在关于备份的Linux Shell中很有用。

今天:

date
date -d today
date -d now

明天:

date -d tomorrow
date -d next-day
date -d next-days
date -d "next day"
date -d "next days"
date -d "+1 day"
date -d "+1 days"
date -d "1 day"
date -d "1 days"
date -d "-1 day ago"
date -d "-1 days ago"

昨天:

date -d yesterday
date -d last-day
date -d last-days
date -d "last day"
date -d "last days"
date -d "-1 day"
date -d "-1 days"
date -d "1 day ago"
date -d "1 days ago"

前天:

date -d "2 day ago"
date -d "2 days ago"
date -d "-2 day"
date -d "-2 days"

大前天:

date -d "3 day ago"
date -d "3 days ago"
date -d "-3 day"
date -d "-3 days"

上周,一周前:

date -d "1 week ago"
date -d "1 weeks ago"

上个星期五(不是上周五):

date -d "last-friday"
date -d "last friday"

上月,一月前:

date -d last-month
date -d last-months
date -d "-1 month"
date -d "-1 months"

下月,一月后:

date -d next-month
date -d next-months
date -d "+1 month"
date -d "+1 months"

去年,一年前:

date -d last-year
date -d last-years
date -d "-1 year"
date -d "-1 years"

明年,一年后:

date -d next-year
date -d next-years
date -d "+1 year"
date -d "+1 years"

一小时前:

date -d "last-hour"
date -d "last-hours"
date -d "1 hour ago"
date -d "1 hours ago"

一小时后:

date -d "1 hour"
date -d "1 hours"

一分钟前:

date -d "1 minute ago"
date -d "1 minutes ago"

一分钟后:

date -d "1 minute"
date -d "1 minutes"

一秒前:

date -d "1 second ago"
date -d "1 seconds ago"

一秒后:

date -d "1 second"
date -d "1 seconds"
#date -d "yesterday" +"%Y"

cal — 显示日历.

描述

cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,通称阳历。

参数

-3 显示系统前一个月,当前月,下一个月的月历

-s 显示星期天为一个星期的第一天,默认的格式

-m 显示星期一为一个星期的第一天

-y 显示指定年份的日历,默认当前年.

-A number 显示当前月几个月后的日历

-B number 显示当前月几个月前的日历

实例

显示当前月日历

$ cal
    October 2012      
Su Mo Tu We Th Fr Sa  
    1  2  3  4  5  6  
 7  8  9 10 11 12 13  
14 15 16 17 18 19 20  
21 22 23 24 25 26 27  
28 29 30 31          

显示2012年9月份日历

$ cal 9 2012
   September 2012     
Su Mo Tu We Th Fr Sa  
                   1  
 2  3  4  5  6  7  8  
 9 10 11 12 13 14 15  
16 17 18 19 20 21 22  
23 24 25 26 27 28 29  
30                    

显示当前月和后两个月日历

$ cal -A2
                            2012
      October               November              December        
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  
    1  2  3  4  5  6               1  2  3                     1  
 7  8  9 10 11 12 13   4  5  6  7  8  9 10   2  3  4  5  6  7  8  
14 15 16 17 18 19 20  11 12 13 14 15 16 17   9 10 11 12 13 14 15  
21 22 23 24 25 26 27  18 19 20 21 22 23 24  16 17 18 19 20 21 22  
28 29 30 31           25 26 27 28 29 30     23 24 25 26 27 28 29  
                                            30 31       
赞(0) 打赏
转载请注明出处:服务器评测 » Linux 日期和时间的那些事儿
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏