Ls

為什麼 ls -lrth 和 ls -ltch 給出不同的結果

  • September 27, 2018

我試圖找到數據庫備份的時間。通常我使用

ls -ltch

但是這次我用

ls -lrth

它給了我一個文件的不同結果,並且兩個命令的所有日期戳都相同

-rw-r----- 1 oracle dba  41M Dec  7 23:59 ctrl_071223
-rw-r----- 1 oracle dba  42M Dec  7 20:52 c-4249173797-20121207-00
-rw-r----- 1 oracle dba 202M Dec  7 20:52 ALG_OSLPRD_jens9rfr.alg
-rw-r----- 1 oracle dba 189M Dec  7 20:52 ALG_OSLPRD_jfns9rfr.alg
-rw-r----- 1 oracle dba 140M Dec  7 20:52 ALG_OSLPRD_jgns9rfr.alg
-rw-r----- 1 oracle dba 3.0G Dec  7 20:51 BKPOSLPRD_jbns9p1f.F_bkp
-rw-r----- 1 oracle dba 4.2G Dec  7 20:46 BKPOSLPRD_jdns9p1f.F_bkp
-rw-r----- 1 oracle dba 3.8G Dec  7 20:43 BKPOSLPRD_jcns9p1f.F_bkp
[root@pdbosl02 daily]# ls -lrth
total 12G
-rw-r----- 1 oracle dba 3.8G Dec  7 20:43 BKPOSLPRD_jcns9p1f.F_bkp
-rw-r----- 1 oracle dba 4.2G Dec  7 20:46 BKPOSLPRD_jdns9p1f.F_bkp
-rw-r----- 1 oracle dba 3.0G Dec  7 20:51 BKPOSLPRD_jbns9p1f.F_bkp
-rw-r----- 1 oracle dba 140M Dec  7 20:52 ALG_OSLPRD_jgns9rfr.alg
-rw-r----- 1 oracle dba 189M Dec  7 20:52 ALG_OSLPRD_jfns9rfr.alg
-rw-r----- 1 oracle dba 202M Dec  7 20:52 ALG_OSLPRD_jens9rfr.alg
-rw-r----- 1 oracle dba  42M Dec  7 20:52 c-4249173797-20121207-00
-rw-r----- 1 oracle dba  41M Dec  7 20:52 ctrl_071223

我錯過了什麼

這兩個命令之間的區別是:

  • 第二個列表反向排序(-r)
  • 第二個清單使用修改時間戳作為排序鍵(-t)
  • 第一個清單使用 ctime 標記作為排序鍵 (-tc)

在 UNIX 上,一個文件有 3 個時間戳(atime、ctime、mtime),它們在不同的條件下更新。

引用關於 stat 的維基百科文章

atime:上次訪問時間(ls -lu),mtime:上次修改時間(ls -l),ctime:上次狀態更改時間(ls -lc)。

狀態更改的一個範例是更改文件的權限

引用自:https://unix.stackexchange.com/questions/57961