天天看點

Linux 指令 find / -ctime +1 真的是查找1天前建立的檔案咩?

注釋:

   一個臨時檔案目錄/exp/temp/之前寫好腳本每天晚上23:30 定時清理1天前的所有檔案;

   今天客戶找我/exp/temp/目錄存在2天前的檔案!

   難道 find /exp/temp/* -ctime  +1 -exec rm  -rf {} \; 指令是查找‘2天’前的檔案?、

   看看我們的環境吧~

[root@report2 ~]# date

<b>fri jan 16 17:34:39 cst 2015</b>

[root@report2 ~]# 

檢視檔案資訊

[root@report2 ~]# ll  /exp/temp/

drwxr-xr-x 3 root root  4096 <b>jan 14 20:07</b> bj_unit_1421237222585

-rw-r--r-- 1 root root  3238 jan 14 20:07 bj_unit_1421237222585.zip

drwxr-xr-x 3 root root  4096 <b>jan 14 20:08</b> bj_unit_1421237303193

-rw-r--r-- 1 root root  3520 jan 14 20:08 bj_unit_1421237303193.zip

drwxr-xr-x 3 root root  4096 <b>jan 14 20:11</b> hj_unit_1421237501049

-rw-r--r-- 1 root root 45621 jan 14 20:12 hj_unit_1421237501049.zip

[root@report2 ~]#

 <b>***檔案都是2015-01-14 20點零幾生成的目錄/檔案,最大時間是2015-01-14 20:12,最小時間</b><b>是2015-01-14 20:07</b>

<b></b>

 <b>***</b><b>我們來執行一下往常的清理指令  find /exp/temp/* -ctime  +1 -exec rm  -rf {} \; </b>

 <b>***</b><b>按理說應該将2015-01-16 17:34:39 - 24小時= 2015-01-15 17:34:39的檔案全部清理才對。</b>

[root@report2 ~]# find /exp/temp/* -ctime  +1 -exec rm  -rf {} \;  ##執行查找删除指令

[root@report2 ~]# ll  /exp/temp/                                                 ##檢視清理情況

drwxr-xr-x 3 root root  4096 jan 14 20:07 bj_unit_1421237222585

drwxr-xr-x 3 root root  4096 jan 14 20:08 bj_unit_1421237303193

drwxr-xr-x 3 root root  4096 jan 14 20:11 hj_unit_1421237501049

[root@report2 temp]# 

<b>*** 發現檔案并沒有做清理,那麼是為什麼沒有清理呢,指令有問題?</b>

<b>*** 測試下-ctime +值 在哪個範圍值能查到什麼時間的檔案</b>

 [root@report2 ~]# date

<b>fri jan 16 17:41:05 cst 2015</b>

[root@report2 ~]#  find /exp/temp/* -ctime  +0.90  <b> ## 0.90*24=21.6   小時 能查到2015-01-14 20:08的bj_unit_1421237303193檔案</b>

/exp/temp/bj_unit_1421237222585

/exp/temp/bj_unit_1421237222585.zip

/exp/temp/bj_unit_1421237303193

/exp/temp/bj_unit_1421237303193.zip

<b>fri jan 16 17:41:31 cst 2015</b>

[root@report2 ~]#  find /exp/temp/* -ctime  +0.89 <b>   ##0.89*24=21.36 小時 能查到2015-01-14 20:12的hj_unit_1421237501049檔案(最大檔案為該檔案)</b>

/exp/temp/hj_unit_1421237501049

/exp/temp/hj_unit_1421237501049.zip

<b>  分析:</b>

<b>  測試結果:</b>

<b>   17:41:05時,  find  /exp/temp/* -ctime  0.90 天前(21.6 小時 )  能查到2015-01-14 20:08的bj_unit_1421237303193檔案</b>

<b>   17:41:31時,  find  /exp/temp/* -ctime  0.89 天前(21.36 小時 )能查到2015-01-14 20:12的hj_unit_1421237501049檔案</b>

<b>  </b>

<b>   而具體當時時間 0.89和0.9天前分别應該是什麼時間呢?</b>

sql&gt;  select ((24*60)+(17*60+41) -(0.9*24*60))/60 from dual ; ((24*60)+(17*60+41)-(0.9*24*60))/60 -----------------------------------                          20.0833333
sql&gt; select ((24*60)+(17*60+41.5) -(0.89*24*60))/60 from dual ; ((24*60)+(17*60+41.5)-(0.89*24*60))/60 --------------------------------------                             20.3316667 sql&gt; <b> *** 從sql上能看出 </b> <b> *** 2015-01-16 17:41分時的0.89天前能查到2015-01-14 20:08前生産的檔案【2015-01-14 20:08前包括bj_unit_1421237222585/bj_unit_1421237303193】</b> <b> *** 2015-01-16 17:41分時的0.90天前能查到2015-01-14 20:33前生産的檔案【2015-01-14 20:33前包括所有檔案,是以把所有都顯示出來了..】</b> <b> *** 從0.89天前 能看出來(當時0.89天前)</b><b>2015-01-15 20:08 -2015-01-14 20:08(系統0.89天前) 正好差1天</b> <b> *** 那想删除一天前生成的檔案應該改為find  /exp/temp/* -ctime  -0 -exec rm  -rf {} \; 其中 0=1-1</b> <b> *** 而每天23:30執行 find 所謂的‘1天’前的檔案進行删除,實際卻是1+1=2天前的才進行删除,也導緻今天執行find ..rm 沒有删除任何檔案;</b> <b> *** 至于為什麼一直以來教材上對find /exp/temp/* -ctime  +1 指令解釋是查找1天前生成的檔案,而實際上除了我們生産環境aix上其他所有環境都是今天測試的樣子</b> <b> *** 隻能默默的覺得是linux不是最官方的被改過了.. 大家也看看你們的crontal find .. -ctime的是否也也同樣的問題!</b> <b> *** 或許誰能給我解釋這個情況..先表示感謝.!</b>

【源于本人筆記】 若有書寫錯誤,表達錯誤,請指正...

繼續閱讀