Come trovare file e directory di grandi dimensioni in Linux
Trovare la dimensione di file e directory di grandi dimensioni nei server Linux è una delle attività più importanti che ogni amministratore di sistema ha incontrato nelle sue attività quotidiane. Pertanto, ogni amministratore di sistema deve conoscere diversi modi per scoprire le dimensioni di dischi e file più grandi che consumano dischi rigidi.
A volte diventa più importante quando il tuo disco di sistema si sta riempiendo così velocemente e devi scoprire quali file o directory vengono ingeriti, tutto lo spazio su disco su Linux. In questo caso, dovremmo essere in grado di trovare un percorso di directory specifico in cui sono popolati i dati. Perché non esiste un comando di scelta rapida disponibile per scoprire i documenti o le directory più grandi su un file system Linux o UNIX, ma esiste una possibilità utilizzando alcune utilità della riga di comando che possono aiutarci a raggiungere la posizione di origine.
Quindi questo tutorial ti aiuterà a utilizzare diversi comandi che possono essere utilizzati su un sistema Linux o UNIX per trovare i file o le directory più grandi sui file system.
1) Usando il comando trova
Il comando “find” è molto utile per cercare file in una gerarchia di directory e per cercare file e directory di grandi dimensioni nel sistema. Eseguiamo il comando seguente per elencare tutti i file di dimensioni superiori a 50 MB, è possibile specificare un numero ancora maggiore.
# find / -xdev -type f -size +50M
Per trovare risultati più dettagliati su questi file di grandi dimensioni, puoi espandere il comando “trova” sotto i parametri.
# find / -xdev -type f -size +50M -exec ls -alh {} ; | sort -nk 5
Usa il comando seguente per trovare i 10 file più grandi in una directory specifica sul tuo sistema.
# find /usr -type f -printf "%s %pn" | sort -rn | head -n 10
114973832 /usr/share/fonts/opentype/noto/NotoSansCJK.ttc
83333096 /usr/lib/thunderbird/libxul.so
78809336 /usr/lib/x86_64-linux-gnu/libOxideQtCore.so.0
71551944 /usr/lib/firefox/libxul.so
58250232 /usr/lib/libreoffice/program/libmergedlo.so
41729688 /usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37.19.4
41587032 /usr/lib/x86_64-linux-gnu/libLLVM-3.8.so.1
41294304 /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitPluginProcess2
37857816 /usr/lib/x86_64-linux-gnu/libQt5WebKit.so.5.5.1
35945726 /usr/local/bin/consul
2) Usando il comando ls
“ls” è un comando della shell di Linux che elenca il contenuto delle directory dei file e delle directory. È possibile utilizzare questo comando in diversi modi per elencare file e cartelle. Per controllare l’elenco dei file nella directory corrente, ordinati per dimensione con la dimensione più grande, eseguire il comando seguente.
# ls -alhS
-rw------- 1 root root 59K Apr 18 20:57 agedu.dat
-rw------- 1 root root 13K Apr 20 18:27 .gt5.html
-rw-r--r-- 1 root root 10K Jan 25 03:43 index.html
-rw------- 1 root root 4.1K Apr 22 22:06 .bash_history
drwx------ 6 root root 4.0K Apr 18 20:57 .
drwxr-xr-x 24 root root 4.0K Apr 17 10:40 ..
drwx------ 2 root root 4.0K Apr 20 17:03 .cache
drwx------ 3 root root 4.0K Apr 12 15:38 .gnupg
drwx------ 2 root root 4.0K Apr 20 18:27 .gt5-diffs
drwx------ 2 root root 4.0K Apr 20 18:29 .w3m
-rw-r--r-- 1 root root 3.1K Oct 22 2015 .bashrc
-rw------- 1 root root 1.1K Apr 12 15:43 .viminfo
-rw-r--r-- 1 root root 148 Aug 17 2015 .profile
Allo stesso modo, puoi usare il comando “ls” per aggiungere con r
per visualizzare in modo ricorsivo la dimensione dei file nella directory corrente oppure puoi specificare il percorso di quella directory in cui vuoi vedere la dimensione dei file presenti lì.
# ls -lhtr
# ls -lhtr /var/log/
Per ottenere un elenco dei 10 file ricorsivi più grandi nella directory corrente, utilizzare il comando seguente.
# ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n10
456K initial-status.gz
356K syslog
248K dpkg.log
216K syslog.1
168K kern.log
160K kern.log.1
100K dpkg.log.2.gz
96K partman
92K syslog
84K syslog.6.gz
Per ottenere ulteriore aiuto per utilizzare il comando “ls”, puoi utilizzare il comando seguente.
# ls --help
3) Utilizzando lo strumento gt5
“Gt5” è un altro ottimo strumento da riga di comando che può essere utilizzato per controllare la dimensione di file e directory su un sistema Linux. Ma deve essere installato sul tuo sistema prima di poter iniziare a usarlo. Per installare “gt5” puoi comandare di seguito sul tuo sistema Linux.
# apt install gt5
Dopo l’installazione, puoi usarlo per controllare la dimensione dei file e delle directory di sistema usando i comandi seguenti.
# gt5
# gt5 /var
È possibile specificare qualsiasi directory estesa con il comando “gt5” per controllare directory e file di dimensioni maggiori. Per espandere ulteriormente le directory, trascina il cursore del mouse su quella directory e premi Invio.
# gt5 /var/log
Cambiamo la tua directory in un altro percorso ed eseguiamo il comando “gt5” per la vista interna dei file e delle directory principali.
# cd /usr/src/linux-headers-4.10.0-20-generic/
#gt5
4) Utilizzo del comando du
Il comando “du”, abbreviato come utilizzo del disco, riporta le dimensioni degli alberi di directory, compreso il loro intero contenuto e le dimensioni dei singoli file. Ciò lo rende utile per tenere traccia dei maiali dello spazio, ovvero directory e file che consumano quantità grandi o eccessive di spazio su un disco rigido o altri supporti di memorizzazione.
La sintassi di base per “du” è mostrata di seguito.
# du [options] [directories and/or files]
Per scoprire i file e le directory più importanti in un file system Linux/UNIX, non esiste un comando du appropriato per ottenere il risultato richiesto, ma usalo con altri comandi come “sort”, “head” e ” find”, come mostrato di seguito. Per ottenere l’output in una forma più leggibile, puoi usare il parametro “-h” con il comando “du”.
# du -ah /var | sort -n -r | head -n 10
1020K /var/cache/apt/archives/fonts-dejavu-core_2.37-1_all.deb
1016K /var/cache/apt/archives/udev_232-21ubuntu3_amd64.deb
1016K /var/cache/apt/archives/libxatracker2_12.0.6-0ubuntu0.16.04.1_amd64.deb
1016K /var/cache/apt/archives/colord-data_1.3.3-2_all.deb
1016K /var/cache/apt/archives/colord-data_1.3.2-1_all.deb
1004K /var/cache/apt/archives/libxatracker2_12.0.6-0ubuntu0.16.10.1_amd64.deb
1004K /var/cache/app-info/gv
1000K /var/cache/app-info/gv/en_US.gvz
996K /var/cache/apt/archives/udev_231-9ubuntu4_amd64.deb
996K /var/cache/apt/archives/netpbm_2%3a10.0-15.3build1_amd64.deb
Quindi puoi utilizzare il comando seguente spostandoti nella directory desiderata in cui desideri controllare i file dall’alto come mostrato.
# cd /var/log/
# du -hsx * | sort -rh | head -10
2.9M dpkg.log.1
2.0M dist-upgrade
1.6M kern.log.1
932K installer
232K syslog.2.gz
228K tomcat8
188K syslog.1
188K auth.log.1
144K kern.log
136K apt
5) Comandi Ncdu per controllare l’utilizzo del disco
Ncdu è un analizzatore dell’utilizzo del disco con un’interfaccia Ncurses. È molto utile e facile da usare quando si tratta di tenere traccia di file e directory che consumano spazio. Puoi semplicemente installarlo usando il comando seguente sul tuo sistema Ubuntu o RHEL.
# apt install ncdu
# yum install ncdu
Dopo l’installazione, puoi iniziare a utilizzare questo comando per controllare l’utilizzo del disco del tuo sistema.
# ncdu
Dopo aver eseguito questo comando, avvierà l’aggiornamento del disco e visualizzerà i risultati sul terminale. Utilizzare il comando seguente per controllare l’utilizzo del disco della partizione root del sistema.
# ncdu /
La cartella più grande viene visualizzata in alto, il che semplifica la risoluzione dei problemi. Puoi usare il suo comando di aiuto per saperne di più sul suo utilizzo per ottenere di più da esso.
6) Shell Script per trovare le directory che consumano più dischi
In questo script di shell, vedremo quali directory principali stanno consumando molto spazio su disco in modo da poter liberare spazio durante un’emergenza. I comandi che ho usato in questo script sono “du” con chiavi diverse, “sort” e “head”.
Creiamo un nuovo file usando l’editor della riga di comando come “vi” e inseriamo il seguente contenuto come mostrato di seguito.
# vim topdir.sh
#/bin/bash
#check if user input argument
if [ $# -eq 0 ]; then
#if no argument print next messge and exit from script
echo "Usage: $0 "
exit 1
fi
# Save first arguments to variables
CheckedDir="$1"
#
HeadValue=$2
#set value for variable count value 1
count=1
#just print empty line
echo ""
#Print next message:
echo "Here is the ${HeadValue} biggest directories located in ${CheckedDir}:"
echo ""
#Getting list of directories and space they use.
du -a --max-depth=1 --one-file-system ${CheckedDir}/ |
#next we sort result
sort -rn |
sed "1d" |
# next we get only first X directories
head -"${HeadValue}" |
#next print result to user
while read size dirrr ; do
#counting size in Mb
size="$(( size / 1024 ))"
#show output for user
echo "N°${count} : ${dirrr} is ${size} Mb"
((count++))
done
echo ""
Salva e chiudi il file di configurazione, assegna al file le autorizzazioni eseguibili, quindi esegui lo script per trovare le directory principali nella posizione definita, come mostrato.
# chmod +x topdir.sh
# ./topdir.sh /var/log/
Conclusione
In questo tutorial, abbiamo utilizzato diverse utilità della riga di comando per controllare directory e dischi di grandi dimensioni su sistemi Linux. Utilizziamo spesso più modi per raggiungere quei file o directory che consumano molto spazio su disco e abbiamo bisogno di utilizzare tali comandi per raggiungere quei file e directory. In questo articolo, abbiamo trattato solo gli strumenti da riga di comando per trovare l’utilizzo dello spazio su disco, mentre sono disponibili molti altri analizzatori web per trovare e monitorare lo spazio su disco di file e directory di grandi dimensioni.