2011年5月29日 星期日

[ linux ] date

在 linux 下,要碰到時間相關的事情~
就不得不用到內建的程式  data
下面來介紹幾個常常用到的功能……


date
輸出系統時間。


date +%s
輸出unix 時間
是從 utc 時間  1970/01/01 00:00:00 起~到現在的總秒數~

如果要自訂輸出時間的格式~
date +"%Y/%m/%d %Z %H:%M:%S"
2011/05/29 UTC 15:08:16


%Y   年
%m   月
%d    日
%Z    時區
%H    小時
%M   分鐘
%S    秒

後面的 小時、分、秒 都是大寫~ 這樣可以跟 月份的 m 做區分,蠻好記的。
如果忘記的話,可以直接 date --help
裡面會有更多細部的參數可以用~~~


再來是查詢時間的用法~~
date -d ' -2 day'
在 -d 這個 option後接上要查的時間
例子是兩天前,也可以有其它的間隔~~ 
像是  hour week year 都可以~~

打數字也OK,它的接受度出乎我的意料:p

date -d ' 2011/11/11 UTC 12:12:12'
Fri Nov 11 12:12:12 UTC 2011

這時候會想說為什麼要打數字…? 因為,它可以用在時間格式的轉換~
在做一些監控的 service 時,直接把時間統一指定成 UTC 時間的  unix 格式是很方便的!
可以開個變數 ~
WhatTime=`date -u +%s`
echo $WhatTime
( -u 是指定時區為  UTC )

那如果是從其它軟體、系統下載入的時間,也可以寫個 bash 呼叫  date來做格式轉換~
date -d ' 2011/11/11 UTC 12:12:12' +%s
1321013532
只要再後面補個 + 再打上自己想要的輸出格式~~

date  常用的功能也介紹差不多了~~

下面要不忘提醒一下,校正時間相關的指令
在爽爽的使用這些系統時間時,如果沒有把時間同步做好的話
收集到的數據可信度就會下降啦!!

對時用的軟體  ntpdate
可以直接手動執行校時動作
ntpdate <校時網址>

台灣的有下面幾個可以用~~~  (在 時間標準局 網站上可以查得到)
tock.stdtime.gov.tw
watch.stdtime.gov.tw
time.stdtime.gov.tw
clock.stdtime.gov.tw 
tick.stdtime.gov.tw

之後,可以把對時動作寫進 crontab 裡,讓系統每天自動幫你對時~~
vim /etc/crontab
加入下面這一行 
10 5 * * * root /usr/sbin/ntpdate tock.stdtime.gov.tw  &> /dev/null
( 對時的時間是 每天的 5 點10 分,如果要改成早上四點可以寫成…
10 4 * * * root /usr/sbin/ntpdate tock.stdtime.gov.tw  &> /dev/null


下面補個快速查詢表^ ^

date

date +%s

date +"%Y/%m/%d %Z %H:%M:%S"
2011/05/29 UTC 15:08:16

%Y   年
%m   月
%d    日
%Z    時區
%H    小時
%M   分鐘
%S    秒

#hour week year 
date -d ' -2 day'

date -d ' 2011/11/11 UTC 12:12:12'
Fri Nov 11 12:12:12 UTC 2011

WhatTime=`date -u +%s`
echo $WhatTime
( -u 是指定時區為  UTC )

date -d ' 2011/11/11 UTC 12:12:12' +%s
1321013532
只要再後面補個 + 再打上自己想要的輸出格式~~

ntpdate <校時網址>



沒有留言:

張貼留言