Warum dauert ls -al plötzlich sehr lange?

0

Plötzlich ls -aldauert es ärgerlich lange, ein normaler lsgeht so schnell wie immer.

Woran kann das liegen?

Nifle
quelle
1
Zusätzlich zu den zusätzlichen stat-ingLinks, wenn Sie Symlinks im Verzeichnis haben, muss das System möglicherweise Sleeping Disks aktivieren, um zu bestätigen, dass der Link noch fehlerfrei ist (ls -Alle Farbcodes für Symlinks basieren darauf, ob sie auf einen gültigen Speicherort verweisen).
Frank Thomas

Antworten:

1

Wenn ausgeführt lswird, werden nur eine Liste der Dateien und sonst nichts angezeigt. ls -alauf der anderen Seite zeigt viel mehr Informationen, und um dies zu tun, muss es diese Dateien stat (1) .

Und wenn etwas mit der Datei nicht stimmt, kann dieser Vorgang möglicherweise sehr 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

Eine einfache chown nifle:nifle .bash*sortierte das Problem.

Nifle
quelle
1

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

Auf meinem habe ich es als Alias:

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

Wenn dies der Fall ist, kann running as \ls -ales direkt aufrufen.

Sie können die Shell-Verarbeitung überprüfen, indem Sie das Shell-Tracing aktivieren, z

$ 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 Sie Ihre sysZeit zu hoch ist, überprüfen Sie load avgin topBefehl , wenn alles , was das Gerät im Moment zu verlangsamen, alternativ Benchmark Ihrer Festplatte bitte, vielleicht haben Sie eine Menge von E / A - Anforderungen gehen (Prüfung durch: iotopoder vmstat).

Wenn dies häufig vorkommt, überprüfen Sie immer mit einer anderen Shell oder auf tmpfs partition ( /tmp), was viel schneller sein sollte.

Kenorb
quelle