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