GNU/Linux >> Linux Esercitazione >  >> Linux

Perché il comando Ls è lento a interrompersi nella directory Nfs con molti file?

Ho notato nelle directory con molti file su NFS se lo faccio

ls *

quindi premi Ctrl-C può volerci un po' (diciamo 20 secondi) prima che ls torni.

Come mai? Il comando ls può essere corretto per essere più reattivo?

Risposta accettata:

Quando esegui ls * , la prima cosa che succede è che la shell ottiene un elenco della directory corrente. Se la directory è enorme e il server è lento, l'operazione potrebbe richiedere del tempo.

Una volta che la shell ha ottenuto l'elenco dei nomi dei file nella directory corrente, ordina quell'elenco (che è molto veloce rispetto a qualsiasi interazione di rete), quindi chiama ls . Il ls comando cerca ogni file a turno e ne recupera i metadati (stat call) per verificare se si tratta di una directory; se un file è una directory, ls elenca il suo contenuto anziché la directory stessa.

Quando premi Ctrl +C , questo non interromperà l'operazione NFS corrente. Non puoi interrompere un'operazione del filesystem ovunque, in quanto ciò potrebbe lasciare il sistema in uno stato incoerente. Anche la lettura di un file potrebbe aggiornare il suo tempo di accesso. Il più delle volte, un'operazione di lettura o scrittura elementare su un file è istantanea per gli standard umani, ma NFS è un'eccezione, specialmente con grandi quantità di dati su una rete lenta.

Quindi premendo Ctrl +C avrà effetto solo:

  • se la shell sta attualmente generando l'elenco dei nomi di file, quando l'elenco sarà completamente recuperato;
  • se ls è stato avviato e sta attualmente ottenendo metadati su un file, quando il server fornisce i metadati;
  • se ls è stato avviato e sta attualmente elencando una directory, quando l'elenco è stato completamente recuperato, o almeno dopo una parte di esso.

Non è colpa dei ls comando (che potrebbe non essere stato ancora avviato). Non è nemmeno colpa della shell:è colpa di NFS. NFS è piuttosto lento.


Linux
  1. Perché Rm può rimuovere i file di sola lettura?

  2. File di gatto con directory?

  3. Usando –exclude con il comando Du?

  4. Controllo della dimensione della directory con du Command in Linux

  5. Come modificare la proprietà di file e directory con il comando chown

Come elencare i file in modo ricorsivo in Linux

Come contare i file nella directory su Linux

Guida introduttiva al comando Tar

Nozioni di base sulla riga di comando di Linux:lavorare con file e directory

lsof Command in Linux con esempi

Comando di comunicazione Linux con esempi