新建一個文件,在linux中用touch命令
1.命令格式:
touch [選項]... 文件...
2.命令參數:
-a 或--time=atime或--time=access或--time=use 只更改存取時間。
-c 或--no-create 不建立任何文檔。
-d 使用指定的日期時間,而非現在的時間。
-f 此參數將忽略不予處理,僅負責解決BSD版本touch指令的兼容性問題。
-m 或--time=mtime或--time=modify 只更改變動時間。
-r 把指定文檔或目錄的日期時間,統統設成和參考文檔或目錄的日期時間相同。
-t 使用指定的日期時間,而非現在的時間。
3.命令功能:
touch命令參數可更改文檔或目錄的日期時間,包括存取時間和更改時間。
4.使用範例:
實例一:創建不存在的文件
命令:
touch log2012.log log2013.log
輸出:
[root@localhost test]# touch log2012.log log2013.log
[root@localhost test]# ll
-rw-r--r-- 1 root root 0 10-28 16:01 log2012.log
-rw-r--r-- 1 root root 0 10-28 16:01 log2013.log
如果log2014.log不存在,則不創建文件
[root@localhost test]# touch -c log2014.log
[root@localhost test]# ll
-rw-r--r-- 1 root root 0 10-28 16:01 log2012.log
-rw-r--r-- 1 root root 0 10-28 16:01 log2013.log
實例二:更新log.log的時間和log2012.log時間戳相同
命令:
touch -r log.log log2012.log
輸出:
[root@localhost test]# ll
-rw-r--r-- 1 root root 0 10-28 16:01 log2012.log
-rw-r--r-- 1 root root 0 10-28 16:01 log2013.log
-rw-r--r-- 1 root root 0 10-28 14:48 log.log
[root@localhost test]# touch -r log.log log2012.log
[root@localhost test]# ll
-rw-r--r-- 1 root root 0 10-28 14:48 log2012.log
-rw-r--r-- 1 root root 0 10-28 16:01 log2013.log
-rw-r--r-- 1 root root 0 10-28 14:48 log.log
實例三:設定文件的時間戳
命令:
touch -t 201211142234.50 log.log
輸出:
[root@localhost test]# ll
-rw-r--r-- 1 root root 0 10-28 14:48 log2012.log
-rw-r--r-- 1 root root 0 10-28 16:01 log2013.log
-rw-r--r-- 1 root root 0 10-28 14:48 log.log
[root@localhost test]# touch -t 201211142234.50 log.log
[root@localhost test]# ll
-rw-r--r-- 1 root root 0 10-28 14:48 log2012.log
-rw-r--r-- 1 root root 0 10-28 16:01 log2013.log
-rw-r--r-- 1 root root 0 2012-11-14 log.log
說明:
-t time 使用指定的時間值 time 作為指定文件相應時間戳記的新值.此處的 time規定為如下形式的十進制數:
[[CC]YY]MMDDhhmm[.SS]
這里,CC為年數中的前兩位,即」世紀數」;YY為年數的後兩位,即某世紀中的年數.如果不給出CC的值,則touch 將把年數CCYY限定在1969--2068之內.MM為月數,DD為天將把年數CCYY限定在1969--2068之內.MM為月數,DD為天數,hh 為小時數(幾點),mm為分鍾數,SS為秒數.此處秒的設定范圍是0--61,這樣可以處理閏秒.這些數字組成的時間是環境變數TZ指定的時區中的一個時 間.由於系統的限制,早於1970年1月1日的時間是錯誤的。
⑵ linux閏秒發生時,會改變jiffies的值嗎
關於linux的Jiffies/Tick/HZlinux核心幾個重要跟時間有關的幾個名詞: HZ、tick、jiffies。1.linux HZlinux核心每隔固定周期會發出timer interrupt (IRQ 0),HZ是用來定義每一秒有幾次timer interrupts。舉例來說,HZ為1000,代表每秒有1000次timer interrupts,比較常見的設置是HZ=100。可以通過 cat /proc/interrupt 查看timer中斷次數,並於一秒後再次觀察其值,通過前後差值可以估算HZ的值。要檢查內核源碼中HZ的值是什麼,可以執行命令:#cat kernel/.config grep 'CONFIG_HZ='還可以直接更改文件param.h2.TickTick是HZ的倒數,意即timer interrupt每發生一次中斷的時間。如HZ為250時,tick為4毫秒(millisecond)。3.JiffiesJiffies為linux核心變數(32位元變數,unsigned long),它被用來紀錄系統自開機以來,已經過多少的tick。每發生一次timer interrupt,Jiffies變數會被加一。在ARM體系結構中,jiffies被初始化為jiffies_64,而jiffies_64是一個u64位元變數,在kernel/timer.c中定義:u64 jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES;即jiffies在系統開機時,並非初始化成零,而是被設為INITAL_JIFFIES(在文件include/linux/jiffies.h中定義為-300*HZ),即代表系統於開機五分鍾後,jiffies便會溢位。那溢位怎麼辦?事實上,linux核心定義幾個macro(timer_after、time_after_eq、time_before與time_before_eq),即便是溢位,也能藉由這幾個macro正確地取得jiffies的內容。
⑶ 閏秒為什麼會導致linux出現問題
由於Linux kernel 2.6.29之前版本存在bug,在進行閏秒調整時可能會引起系統時鍾服務ntpd進程死鎖。Debian Lenny、RHEL/CentOS 5等舊發行版今天仍被廣泛使用,部分供應商早已經發布了補丁。
閏秒導致部分Linux伺服器高CPU使用率
國際地球自轉和參考坐標系統服務(IERS)在2012年6月30日午夜(北京時間7月1號7點59分59秒)增加一閏秒(即出現7:59:60)。由於Linux kernel 2.6.29之前版本存在bug,在進行閏秒調整時可能會引起系統時鍾服務ntpd進程死鎖。Debian Lenny、RHEL/CentOS 5等舊發行版今天仍被廣泛使用,部分供應商早已經發布了補丁。
但除了Linux伺服器外,一些伺服器程序也因為閏秒出現了問題,如Reddit、Mozilla、FourSquare、Yelp、LinkedIn和Gawker等網站都短暫遭遇了技術問題,國內的一家雲儲存供應商發現運行在CentOS 6.2上的Java和MySQL因閏秒出現了不同程度的CPU利用率增長,猜測是JVM和MySQL試圖通過CPU硬體晶振的數據獲得當前精確的時間,由於閏秒的關系,這個時間和操作系統維持的牆上時間(Wall Time,也就是顯示給用戶看的時間)不一致,導致了這個問題。簡單的修正方法是強制重置系統時間,讓系統中所有時間回到同步的狀態。