`du -s .` e` du -hs .` danno risultati diversi (su OS X)


12

La differenza con e senza -hdovrebbe essere solo le unità leggibili dall'uomo, giusto?

Beh, apparentemente no ...

$ du -s .
74216696    .
$ du -hs .
 35G    .

O forse mi sbaglio e il risultato di du -s .non è in KB?


3
Prova a usare du --block-size=1024 -s .. Forse il tuo BLOCK_SIZEè impostato su512
Echoes_86 il

6
Dalla pagina del manuale (OSX): "Se BLOCKSIZE non è impostato e l'opzione -k non è specificata, i conteggi dei blocchi verranno visualizzati in blocchi da 512 byte"
user4556274

Ciò non è molto utile se il filesystem si trova effettivamente in blocchi da 4096 byte.
DopeGhoti,

Quindi non c'è modo di avere la dimensione in byte? Pensavo che si -hstesse semplicemente dividendo per 1024 e aggiungendo alcune unità
Creak

2
echo "74216696*512" | bcoutput, 37998948352. E sì, si -hconverte in una forma leggibile dall'uomo dividendola ancora e ancora per 1024. Quello che ho ottenuto è stato 35.3887, che è terribilmente vicino a ciò che duriporta. Per quanto riguarda la dimensione in byte, basta usare --block-size=1. Su Linux, c'è -bun'opzione per questo, ma non ho familiarità con OS Xdu
Sergiy Kolodyazhnyy,

Risposte:


23

dusenza un identificatore del formato di output fornisce l'utilizzo del disco in blocchi di 512 byte, non in kilobyte . È invece possibile utilizzare l'opzione -kper visualizzare in kilobyte. Su OS X (o macOS, o MacOS o Macos; a seconda di ciò che ti piace), puoi personalizzare l'unità predefinita impostando la variabile di ambiente BLOCKSIZE(ciò influisce anche su altri comandi).


1
Non lo sapevo ... Qual è l'interesse per avere il numero di blocchi? Non ho mai visto una persona usare i blocchi quando parlava di dimensioni su disco ...
Creak

2
I blocchi sono l'unità atomica dei filesystem. Qualsiasi file consumerà un numero intero di blocchi sul disco. Un blocco può essere riempito solo parzialmente con dati effettivi, ma l'intero blocco viene allocato nel file. L'uso quotidiano della maggior parte delle persone non si preoccupa dei blocchi se non in senso percentuale o libero. Ma i programmi di utilità di basso livello (ad es fdisk. df, E du) funzionano in blocchi se non diversamente indicato perché quella è l'unità con cui contano internamente.
DopeGhoti,

1
@Creak In realtà, quella parte della risposta era sbagliata. L'unità non ha la dimensione del blocco del filesystem. Ai fini dei classici comandi Unix come du"blocco" significa 512 byte. Vedi la dimensione del blocco del file - differenza tra stat e ls , Differenza tra la dimensione del blocco e la dimensione del cluster
Gilles 'SO- smetti di essere malvagio'

3
"Qualsiasi file consumerà un numero intero di blocchi sul disco." Bene, generalmente sì, a meno che il filesystem non utilizzi il tail tail . Ma sì, i blocchi sono l'unità base del filesystem (anche se la dimensione del blocco reale non si allinea necessariamente alla dimensione del blocco utilizzata da du.) :)
Wildcard

3

Il problema è che durestituisce la dimensione in numero di blocchi di 512 byte.

Per avere la dimensione in KB, puoi invece usare l' -kopzione che usa blocchi da 1024 byte:

$ du -ks .                            
43351596    .
$ du -khs .
 41G    .
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.