Warum dauert ls -al plötzlich so lange?

Warum dauert ls -al plötzlich so lange?

Dauert plötzlich ls -alnervig lange, im Normalfall lsgeht es immer so schnell wie immer.

Was kann das Problem sein?

Antwort1

Wenn lses ausgeführt wird, zeigt es Ihnen nur eine Liste von Dateien und sonst nichts. ls -alAuf der anderen Seite zeigt es viel mehr Informationen, und um das zu tun, muss esStatistik(1)diese Dateien.

Und wenn mit der Datei etwas nicht stimmt, kann dieser Vorgang möglicherweise lange dauern.

Mein Problem war, dass die Gruppe einiger Dateien nicht mehr existierte

-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

Das Problem ließ sich einfach chown nifle:nifle .bash*lösen.

Antwort2

Manchmal kann es sich um einen Alias, zusätzliche Verarbeitung durch die Shell oder langsamen Zugriff auf das Speichergerät handeln.

Auf meinem habe ich es als Alias:

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

Wenn dies der Fall ist, \ls -alkönnte „running as“ es direkt aufrufen.

Bei der Shell-Verarbeitung können Sie dies überprüfen, indem Sie Shell Tracing aktivieren, z. B.

$ 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

Überprüfen Sie abschließend Ihre lsZeiten:

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

Wenn Ihre sysZeit zu hoch ist, prüfen Sie load avgim topBefehl, ob irgendetwas Ihren Computer momentan verlangsamt. Alternativ führen Sie einen Benchmarking-Test Ihrer Festplatte durch. Möglicherweise laufen bei Ihnen viele E/A-Anfragen (Prüfung mit: iotopoder vmstat).

Wenn dies relativ oft vorkommt, überprüfen Sie es immer mit einer anderen Shell oder auf der tmpfs-Partition ( /tmp), was viel schneller sein sollte.

verwandte Informationen