NFS檔案系統上檔案的修改時間顯示問題 Solaris + NetApp儲存,使用者的home目錄放在NetApp上,通過autofs掛到本地。發現在使用者各自的home目錄下touch檔案後用ls -l查看,mtime(modify time)一列只顯示年月日,不顯示時分。$ touch file$ ls -l file-rw-r--r-- 1 user user 0 Aug 25 2009 file 等了十幾分鐘後,再次ls查看,能夠看到時分了,但顯示的時間並不是原來執行touch的時間,而是向後延遲了十幾分鐘。$ ls -l file-rw-r--r-- 1 user user 0 Aug 25 13:22 file 在Solaris 10的系統上,重新touch檔案file,並立即用ls -e(-e選項可顯示時間到秒)查看檔案mtime的時分秒資訊,可以看到顯示出了具體的mtime時間。$ touch file$ ls -e file-rw-r--r-- 1 user user 0 Aug 25 13:24:09 2009 file 然後立即用date看了一下本地時間$ dateTue Aug 25 13:09:22 CST 2009 發現檔案的mtime時間比本地時間早了十幾分鐘,而前面測試的第二步裡所等待的十幾分鐘,正好是這個時間差。 所以,判斷是NetApp儲存上的時間與Solaris系統的時間不同步,導致了這一問題。 得到該結論後又做了一下測試,發現,只要NetApp的時間比本地時間早,那麼在touch之後ls -l查看都是不能夠顯示時分資訊的;如果NetApp的時間比本地時間晚,則能夠顯示時分資訊,但是所顯示的時分資訊不是本地的touch時間,而是NetApp上的時間。 所以,NFS檔案系統中檔案和目錄顯示的時間以NFS所在的主機時間為準,並且在NFS主機時間比本地主機提前的情況下,建立檔案後不能夠立即顯示時分資訊。要杜絕這一問題,應盡量讓NFS主機和本地主機的時間保持同步。 設定時間同步的方法見 http://www.bkjia.com/os/201307/231894.html 但有個問題想不通,既然不讓ls -l顯示比本地時間提前的mtime,那為什麼在Solaris 10中ls -e這個選項又讓它能顯示了呢?而man ls中描述-e選項僅僅如下:The same as -l, except displays time to the second, and with one format for all files regardless of age: mmm dd hh:mm:ss yyyy.