天天看點

【Linux常用指令】時間指令

date指令

date指令是顯示或設定系統時間與日期。

很多shell腳本裡面需要列印不同格式的時間或日期,以及要根據時間和日期執行操作。延時通常用于腳本執行過程中提供一段等待的時間。日期可以以多種格式去列印,也可以使用指令設定固定的格式。在類UNIX系統中,日期被存儲為一個整數,其大小為自世界标準時間(UTC)1970年1月1日0時0分0秒起流逝的秒數。

文法

date(選項)(參數)      

選項

-d<字元串>:顯示字元串所指的日期與時間。字元串前後必須加上雙引号;      
-s<字元串>:根據字元串來設定日期與時間。字元串前後必須加上雙引号;      
-u:顯示GMT;      
--help:線上幫助;      
--version:顯示版本資訊。      

參數

<+時間日期格式>:指定顯示時使用的日期時間格式。

日期格式字元串清單

%H 小時,24小時制(00~23)      
%I 小時,12小時制(01~12)      
%k 小時,24小時制(0~23)      
%l 小時,12小時制(1~12)      
%M 分鐘(00~59)      
%p 顯示出AM或PM      
%r 顯示時間,12小時制(hh:mm:ss %p)      
%s 從1970年1月1日00:00:00到目前經曆的秒數      
%S 顯示秒(00~59)      
%T 顯示時間,24小時制(hh:mm:ss)      
%X 顯示時間的格式(%H:%M:%S)      
%Z 顯示時區,日期域(CST)      
%a 星期的簡稱(Sun~Sat)      
%A 星期的全稱(Sunday~Saturday)      
%h,%b 月的簡稱(Jan~Dec)      
%B 月的全稱(January~December)      
%c 日期和時間(Tue Nov 20 14:12:58 2012)      
%d 一個月的第幾天(01~31)      
%x,%D 日期(mm/dd/yy)      
%j 一年的第幾天(001~366)      
%m 月份(01~12)      
%w 一個星期的第幾天(0代表星期天)      
%W 一年的第幾個星期(00~53,星期一為第一天)      
%y 年的最後兩個數字(1999則是99)      

執行個體

格式化輸出:

date +"%Y-%m-%d"      
2009-12-07      

輸出昨天日期:

date -d "1 day ago" +"%Y-%m-%d"      
2012-11-19      

傳說中的 1234567890 秒:

date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S"      
2009-02-13 23:02:30      

普通轉格式:

date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"      
2009/12/12 00:00.00      

設定時間:

date -s                        //設定目前時間,隻有root權限才能設定,其他隻能檢視      
date -s 20120523               //設定成20120523,這樣會把具體時間設定成空00:00:00      
date -s 01:01:01               //設定具體時間,不會對日期做更改      
date -s "01:01:01 2012-05-23"  //這樣可以設定全部時間      
date -s "01:01:01 20120523"    //這樣可以設定全部時間      
date -s "2012-05-23 01:01:01"  //這樣可以設定全部時間      
date -s "20120523 01:01:01"    //這樣可以設定全部時間      

hwclock指令

hwclock指令是一個硬體時鐘通路工具,它可以顯示目前時間、設定硬體時鐘的時間和設定硬體時鐘為系統時間,也可設定系統時間為硬體時鐘的時間。

在Linux中有硬體時鐘與系統時鐘等兩種時鐘。硬體時鐘是指主機闆上的時鐘裝置,也就是通常可在BIOS畫面設定的時鐘。系統時鐘則是指kernel中的時鐘。當Linux啟動時,系統時鐘會去讀取硬體時鐘的設定,之後系統時鐘即獨立運作。所有Linux相關指令與函數都是讀取系統時鐘的設定。

hwclock(選項)      

--adjust:hwclock每次更改硬體時鐘時,都會記錄在/etc/adjtime檔案中。使用--adjust參數,可使hwclock根據先前的記錄來估算硬體時鐘的偏差,并用來校正目前的硬體時鐘;      
--debug:顯示hwclock執行時詳細的資訊;      
--directisa:hwclock預設從/dev/rtc裝置來存取硬體時鐘。若無法存取時,可用此參數直接以I/O指令來存取硬體時鐘;      
--hctosys:将系統時鐘調整為與目前的硬體時鐘一緻;      
--set --date=<日期與時間>:設定硬體時鐘;      
--show:顯示硬體時鐘的時間與日期;      
--systohc:将硬體時鐘調整為與目前的系統時鐘一緻;      
--test:僅測試程式,而不會實際更改硬體時鐘;      
--utc:若要使用格林威治時間,請加入此參數,hwclock會執行轉換的工作;      
--version:顯示版本資訊。      

設定硬體時間要依賴于作業系統時間,具體方法如下:

hwclock systohc      
hwclock --systohc -utc      

不加任何參數使用hwclock,可以檢視目前的硬體日期和時間。

hwclock      

檢視clock檔案,确認是否設定了UTC:

cat
      
 /etc/default/rcS      
UTC=yes      

在其他一些版本的Linux(如RebHat)中可以這樣檢視:

cat /etc/sysconfig/clock      
ZONE="America/Los_Angeles"      
UTC=false      
ARC=false      

cal指令

cal指令用于顯示目前月曆,或者指定日期的月曆。

cal(選項)(參數)      

-l:顯示單月輸出;      
-3:顯示臨近三個月的月曆;      
-s:将星期日作為月的第一天;      
-m:将星期一作為月的第一天;      
-j:顯示"julian"日期;      
-y:顯示目前年的月曆。      

月:指定月份;      
年:指定年份。      

單獨執行cal指令會列印出月曆:

[root@localhost ~]# cal      
    十二月 2013      
日 一 二 三 四 五 六      
 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      

繼續閱讀