GNU/Linux >> Znalost Linux >  >> Linux

ls se zablokuje pro určitý adresář

Řešení 1:

Spusťte strace ls /var/www/ a uvidíte, na čem visí. Určitě to visí na I/O -- to je to, co D uveďte ve svém ps výstup znamená (a protože kill nepomůže, je to jeden z nepřerušitelných I/O systémových volání). Většina zablokování zahrnuje server NFS, který se stal bohem, ale na základě vašeho df tady tomu tak není. Rychlá kontrola dmesg protože cokoli souvisejícího se souborovými systémy nebo disky může být užitečné, pro každý případ.

Řešení 2:

Měl jsem problém se stejnými příznaky. Ukázalo se, že jsem v tomto adresáři měl symbolický odkaz na připojení SMB přes GVFS.

lrwxrwxrwx  1 alex alex        45 Sep 16  2011 foo -> /home/alex/.gvfs/bar on foo/data/

Normálně ls se dokončí okamžitě bez ohledu na to, zda byla sdílená složka připojena či nikoli. Ale v tomto případě jsem stroj pozastavil a obnovil a držák obecně fungoval špatně. Opětovné připojení sdílené položky problém vyřešilo.

Řešení 3:

V naději, že to bude užitečné, jsem měl výše uvedené příznaky způsobené použitím docker a docker compose s ovladačem AUFS v Ubuntu 14.04. ls <dir> visel a strace ls <dir> ukázal, že visí na getdents volání. Zastavení všech běžících kontejnerů mi umožnilo začít používat disk podle očekávání.

Řešení 4:

Měl jsem stejný problém.

Zadání adresáře je v pořádku, jeho výpis se zasekne, hledání prací, zablokuje se kompletní karta a některé složky pod dělat práce. Velmi divné.

Přečtení tohoto vlákna o chybě serveru mě přivedlo na logickou cestu k řešení.

Souviselo to s NAS a NAS, které se běžně označovalo jako „automatické připojení“, mě přimělo si uvědomit, že jsem nedávno změnil svůj fstab na „automatické připojení“ některých USB disků, pokud byly přítomny, ale pokračovaly jako normálně, když nebyly.

Potom jsem postupoval následovně:

  1. Odpojte oddíl obsahující delikventní adresář.
  2. Upravte fstab a převeďte veškeré automatické připojování buď na komentované, nebo bez automatického.
  3. Znovu načtěte SystemD, pokud jej máte:systemctl --system daemon-reload
  4. mount -a

Zkuste znovu vstoupit do adresáře a získat ten hřejivý pocit, že jste problém vyřešili.


Linux
  1. Linux cd command tutorial pro začátečníky (8 příkladů)

  2. K čemu jsou Inody dobré?

  3. Připojte k výstupu procesů pro prohlížení

  1. Žádná manuálová stránka pro příkaz cd

  2. root heslo nefunguje pro su v terminálu

  3. Transmission-daemon se nestahuje v adresáři sledování

  1. Instalace postfixu se zasekne na obrazovce konfigurace Postfixu?

  2. Příkaz Shell pro získání IP adresy?

  3. vytvořit domovské adresáře po vytvoření uživatelů