Linux
命令 ls -ltu 無法根據上次訪問時間列出文件夾/文件
首先在您的 linux 桌面上創建 2 個文件夾。
a b
現在在終端中執行它
ls -ltu
結果是
drwxr-xr-x 2 root root 4096 Aug 30 20:33 b drwxr-xr-x 2 root root 4096 Aug 30 20:33 a
讓我們點擊 a 並重新執行它。
與上述完全相同的結果。
讓我們點擊 b 並重新執行它。
與上述完全相同的結果。
我正在嘗試根據上次點擊的文件夾來排列文件夾。他們推薦
ls -ltu
,但它不起作用。
您可以使用該命令
stat
查看與文件和目錄相關的時間資訊。例子
$ mkdir a b $ ll total 8 drwxrwxr-x 2 saml saml 4096 Aug 31 00:08 a drwxrwxr-x 2 saml saml 4096 Aug 31 00:08 b $ ls -ltu total 8 drwxrwxr-x 2 saml saml 4096 Aug 31 00:08 a drwxrwxr-x 2 saml saml 4096 Aug 31 00:08 b
統計輸出
stat
現在讓我們使用以下命令查看這些目錄:$ stat a b File: `a' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd02h/64770d Inode: 5643285 Links: 2 Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml) Access: 2013-08-31 00:08:03.621936538 -0400 Modify: 2013-08-31 00:08:03.621936538 -0400 Change: 2013-08-31 00:08:03.621936538 -0400 File: `b' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd02h/64770d Inode: 5643286 Links: 2 Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml) Access: 2013-08-31 00:08:03.621936538 -0400 Modify: 2013-08-31 00:08:03.621936538 -0400 Change: 2013-08-31 00:08:03.621936538 -0400
訪問
a
現在讓我們訪問目錄
a
:$ ls a
現在讓我們重新檢查目錄
stat
:$ stat a b File: `a' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd02h/64770d Inode: 5643285 Links: 2 Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml) Access: 2013-08-31 00:08:33.221267791 -0400 Modify: 2013-08-31 00:08:03.621936538 -0400 Change: 2013-08-31 00:08:03.621936538 -0400 File: `b' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd02h/64770d Inode: 5643286 Links: 2 Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml) Access: 2013-08-31 00:08:03.621936538 -0400 Modify: 2013-08-31 00:08:03.621936538 -0400 Change: 2013-08-31 00:08:03.621936538 -0400
我們可以看到我們確實影響了目錄的統計資訊
ls a
:前
Access: 2013-08-31 00:08:03.621936538 -0400
後
Access: 2013-08-31 00:08:33.221267791 -0400
訪問
b
現在如果我們訪問
b
目錄,ls b
:$ ls b $ ls -ltu total 8 drwxrwxr-x 2 saml saml 4096 Aug 31 00:17 b drwxrwxr-x 2 saml saml 4096 Aug 31 00:08 a
統計輸出
我們可以看到訪問時間發生了變化,上面的輸出
ls -ltu
應該是這樣的:$ stat a b File: `a' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd02h/64770d Inode: 5643285 Links: 2 Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml) Access: 2013-08-31 00:08:33.221267791 -0400 Modify: 2013-08-31 00:08:03.621936538 -0400 Change: 2013-08-31 00:08:03.621936538 -0400 File: `b' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd02h/64770d Inode: 5643286 Links: 2 Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml) Access: 2013-08-31 00:17:15.279776957 -0400 Modify: 2013-08-31 00:08:03.621936538 -0400 Change: 2013-08-31 00:08:03.621936538 -0400
我們可以再次看到一個簡單
ls b
的原因導致訪問時間得到更新:前
Access: 2013-08-31 00:08:03.621936538 -0400
後
Access: 2013-08-31 00:17:15.279776957 -0400
概括
在查看上述分析時,我看不出有任何理由
ls -ltu
不按預期向您顯示按訪問時間排序的目錄。那麼這是什麼一回事?
也許您安裝了目錄,使得訪問時間沒有被跟踪?這可以解釋為什麼沒有變化。
如果您在手冊頁中查找 mount 命令,您將看到定義了以下 2 個選項:
atime Update inode access time for each access. See also the strictatime mount option. noatime Do not update inode access times on this filesystem (e.g, for faster access on the news spool to speed up news servers).
您可以使用該
mount
命令檢查文件系統的掛載方式。如果安裝了一個設備以使該選項noatime
出現,那麼它正在被安裝,因此訪問時間 (atime) 不會被跟踪。這樣做通常是為了提高性能。例子
$ mount /dev/mapper/vg_grinchy-lv_root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) tmpfs on /dev/shm type tmpfs (rw) /dev/sda5 on /boot type ext4 (rw) /dev/mapper/vg_grinchy-lv_home on /home type ext4 (rw) gvfs-fuse-daemon on /home/saml/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=saml)