為什麼 ls -al 突然需要很長時間?

為什麼 ls -al 突然需要很長時間?

突然ls -al需要一段令人惱火的長時間,正常ls就像平常一樣快。

問題可能是什麼?

答案1

運行時ls它只顯示文件列表而沒有其他內容。ls -al另一方面顯示更多信息,為了做到這一點,它必須統計數據(1)那些文件。

如果文件出現問題,該操作可能會花費很長時間。

我的問題是某些文件組不再存在

-rw-------   1 nifle   10001    21499 Jan 25 14:31 .bash_history
-rw-r--r--   1 nifle   10001      304 Dec  6  2004 .bash_logout
-rw-r--r--   1 nifle   10001      222 Dec 16 14:05 .bash_profile
-rw-r--r--   1 nifle   10001      124 Dec  6  2004 .bashrc

簡單的chown nifle:nifle .bash*解決了這個問題。

答案2

有時,這可能是別名問題、shell 的額外處理或對儲存設備的存取速度緩慢。

在我的上,我將其作為別名:

$ type ls
ls is aliased to `ls $LS_OPTIONS'

如果是這樣的話,運行 as\ls -al可以直接呼叫它。

對於shell處理,您可以透過啟動shell追蹤來檢查它,例如

$ set -x
$ ls
+ ls -G -h
README.txt index.php
++ update_terminal_cwd
++ local url_path=
++ local i ch hexch LC_CTYPE=C LC_ALL=
++ (( i = 0 ))
++ (( i < 26 ))
++ ch=/
++ [[ / =~ [/._~A-Za-z0-9-] ]]
++ url_path+=/
++ (( ++i ))
++ (( i < 26 ))
++ ch=U
++ [[ U =~ [/._~A-Za-z0-9-] ]]
++ url_path+=U
++ (( ++i ))
++ (( i < 26 ))
++ ch=s
... hundred of other lines
$ set +x
$ echo $PROMPT_COMMAND
update_terminal_cwd

最後檢查一下你的ls時間:

$ time ls -la
...
real    0m0.025s
user    0m0.001s
sys     0m0.004s

如果您的sys時間太長,請檢查load avg命令top目前是否有任何因素減慢您的機器速度,或者請對您的硬碟進行基準測試,也許您正在進行大量 I/O 請求(透過:iotop或進行檢查vmstat)。

如果這種情況經常發生,請始終使用不同的 shell 或 tmpfs 分割區 ( /tmp) 進行檢查,這應該會快得多。

相關內容