TAGS CLOUD
Incrementa dimensioniDecrementa dimensioni
Analisi del file system con uno script shell
Il codice per creare un resoconto dettagliato dei file e delle directory presenti all’interno del disco rigido o in una parte specifica di questo.
(pagina 1 di 4)
Ovviamente per quanto riguarda la programmazione shell, Bash in particolare, ci occuperemo dell’analisi di un file system o di una parte di esso, e della successiva creazione di un resoconto dettagliato del tipo di file e directory che troviamo al suo interno. Ci occuperemo, in pratica, di creare un sistema agevole e veloce per reperire tali informazioni e delle strategie per presentarle efficacemente in un ambiente testuale. Il modo più rapido per elencare file o directory presenti nel file system è il comando find; in realtà, questo comando andrebbe studiato a fondo da chiunque voglia cimentarsi con la scrittura di script per l’ambiente Unix, in quanto la ricca dotazione di opzioni ne fa un tool indispensabile per la gestione dei file. Ricordiamo che, come in molti ambiti dello scripting Unix, la gestione dei file con nomi contenenti spazi è difficoltosa: il comando find permette, in accoppiata con xargs, di gestire questa situazione. La soluzione generica è quella seguente:


find -print0 | xargs -0 -I {}
L’opzione -print0 separa i file con un carattere invisibile, in modo da non trattare lo spazio come separatore; il comando xargs legge tali file separandoli con lo stesso carattere (opzione -0), e sostituisce il nome del file ad una stringa arbitraria, in questo caso “{}” (opzione -I); il comando espresso verrà attuato su ogni elemento e potrà contenere la stringa appena menzionata per poter interagire con il file. Ad esempio, il comando seguente

find -type f -print0 | xargs -0 -I {} wc -l {}

esegue “wc -l” su ogni file. La sintassi proposta è caldamente consigliata per ogni script che faccia uso di find, in quanto, in particolare oggi, i file system sono sempre pieni di file con nomi contenenti spazi: basti pensare a tutti i file musicali o ai video che possediamo, la maggior parte dei quali ha degli spazi nel nome. Nello script che analizzeremo, innanzitutto creeremo tre liste di elementi del file system e le salveremo su tre file temporanei: nessuno vieta di creare file temporanei all’interno di uno script, basta avere l’accortezza di scegliere nomi non comuni e di rimuovere i file alla fine dello script. I tre elenchi creati nello script sono: una lista di tutti i file contenuti nella directory indicata, preceduti dalla dimensione in byte, un elenco di tutti i tipi di file incontrati ed un elenco delle directory immediatamente contenute nella directory analizzata, precedute dalla loro dimensione in kilobyte. Il secondo passo consiste nel presentare queste informazioni in modo completo e facilmente leggibile. Abbiamo optato per un istogramma che permetta di capire velocemente la distribuzione dei file e delle directory per dimensione.  Più avanti ci occuperemo dell’analisi dettagliata del codice che lo compone, mentre la sua esecuzione non presenta particolari problemi. Può essere eseguito da root o da utente comune, dipende dalla directory che desideriamo analizzare e, quindi, dai permessi che abbiamo su questa. Il nome dello script è fs_stat.sf. Copiamolo in una qualsiasi directory, assegniamogli i permessi di esecuzione con chmod +x fs_stat.sh e poi eseguiamolo. Ad esempio, per analizzare il contenuto della directory /usr il comando diventa:

./fs_stat.sh /usr/
Sempre lo stesso script ma eseguito questa volta come utente comune; in questo caso l’analisi è limitata alla propria directory home.


Stampa delle Statistiche fs_stat.sh
Pagina 1/4
Lascia un commento
Tag: file system, script shell, stampa statistiche
Condividi