GNU/Linux >> Znalost Linux >  >> Linux

Proč se příkaz Ls pomalu přerušuje v adresáři Nfs se spoustou souborů?

Všiml jsem si v adresářích se spoustou souborů na NFS, jestli to udělám

ls *

pak stiskněte Ctrl-C, může to chvíli trvat (řekněme 20 sekund), než se ls vrátí.

Proč? Je možné opravit příkaz ls, aby lépe reagoval?

Přijatá odpověď:

Když spustíte ls * , první věc, která se stane, je, že shell získá výpis aktuálního adresáře. Pokud je adresář velký a server pomalý, může to chvíli trvat.

Jakmile shell získá seznam názvů souborů v aktuálním adresáři, seřadí tento seznam (což je velmi rychlé ve srovnání s jakoukoli síťovou interakcí), poté zavolá ls . ls příkaz postupně vyhledá každý soubor a načte jeho metadata (stat call) pro kontrolu, zda se jedná o adresář; pokud je soubor adresář, ls vypíše jeho obsah spíše než samotný adresář.

Když stisknete Ctrl +C , nepřeruší to aktuální provoz NFS. Operaci souborového systému nemůžete přerušit kdekoli, protože by to mohlo způsobit nekonzistentní stav systému. Dokonce i čtení souboru může aktualizovat jeho přístupovou dobu. Ve většině případů je základní operace čtení nebo zápisu do souboru podle lidských standardů okamžitá, ale NFS je výjimkou, zvláště u velkého množství dat v pomalé síti.

Tedy stisknutím Ctrl +C projeví se pouze:

  • pokud shell aktuálně generuje seznam názvů souborů, když je tento seznam plně načten;
  • pokud ls byl spuštěn a aktuálně získává metadata o souboru, když server metadata dodá;
  • pokud ls byl spuštěn a aktuálně vypisuje adresář, když je seznam plně načten, nebo alespoň po jeho části.

Není to chyba ls příkaz (který možná ještě nebyl spuštěn). Není to ani chyba shellu:je to chyba NFS. NFS je dost pomalý.


Linux
  1. Proč může Rm odebrat soubory pouze pro čtení?

  2. Kontrola velikosti adresáře pomocí příkazu du v systému Linux

  3. Jak změnit vlastnictví souborů a adresářů pomocí příkazu chown

  1. Cat soubory s adresářem?

  2. Použití –exclude With The Du Command?

  3. Nelze odebrat soubory z adresáře s chybou „Seznam argumentů je příliš dlouhý“

  1. Výukový program příkazu Linux zforce s příklady

  2. Linux CD příkaz s příklady

  3. Počítání počtu souborů v adresáři pomocí příkazu terminálu OSX