Beklenmeyen davranış -h bayrağıyla du'ya geçti


0

* Nix dünyasında yaşadığım sürece, bir komut bir -hbayrağı kabul ettiğinde değiştirdiğim tek şeyin baskı ifadesini etkili bir şekilde biçimlendirdiği varsayımı altında yaşadım . Bunu genellikle tekrar incelemem ama genel olarak böyle olduğunu kesinlikle buldum.

Bugün aktif olarak yazdığım bir dizinin boyutunu ölçerken çok garip bir deneyim yaşadım.

>>> du -s
15565160    .
>>> du -sh
7.4G    .

İlk başta, dizini tuhaf bir yerde yakaladığımı sanıyordum, ancak her iki değerin de oldukça ısrarcı olduğunu gördüm; Benim ilk varsayım bunun garip bir aracı devlet olduğuydu, ancak bu durumda du -sgözlemlemememin bir sonucu olarak vahşi dalgalanmalar beklerdim.

Burada neler oluyor? Nedir 155...numara? Bayt gibi görünmüyor. 450 ile ikisi arasında oldukça tutarlı bir oran var gibi görünüyor. Yani, sonucunu 450'ye katlarsam, du -sima edilen bayt sayısına oldukça yaklaşırım du -sh.

En büyük soru, baştan beri yanlış olduğum. -hBu bağlamda bayrağı neden baskı biçimini değiştirmekten başka bir şey yapıyor?

Yanıtlar:


4

Öncelikle haklısın. -hbayrak (yardım yazısı için kullanılmaz olduğunda) için çeşitli uygulamalar anlatmak için kullanılır dönüştürmek çıktı etmek "insan okunabilir biçimi." Bu önemli ... biz geri döneceğiz. İçin duözellikle -sbayrak normal "dizin başına" çıkışının bir özetini verir. Temel olarak hepsini bir araya getiriyor.

duBir dizinin mantıksal blok sayısını döndürmek için varsayılan ayardır ve içeriği depolama ortamında bulunur. İşgal edilen blok sayısı, pek çok disk yardımcı programı ve komut dosyası için kullanışlıdır ... ancak çok "insan tarafından okunabilir" değildir. -H bayrağı, blok sayımını birkaç byte'a dönüştürür, sonra en yakın 1024 faktörüne (ve birkaç diğer shenanganlıya dönüşür ... gigabaytlarla sonlanır ve sizin durumunuzda onda bir basamakla sonuçlanır).

Söylediklerinize göre, sisteminizin 512 baytlık bir blok boyutu için yapılandırıldığına bahse girerim çünkü:

15565160 * 512/1024 ^ 3

Bu dikkat etmek önemlidir du, blok boyutu (sırayla) eşittir tarafından belirlenen değeri varsayar --block-size=, değerini bayrağı DU_BLOCK_SIZE, BLOCK_SIZEya BLOCKSIZEortam değişkenleri veya 1024. 1024 bayt, çoğu modern dosya sistemi tarafından kullanılan ortak varsayılan blok boyutudur. Ancak 512 bayt bloklar özellikle nadir değildir. Bu değişkenleri kontrol edin, bunlardan biri muhtemelen 512 olarak ayarlanmıştır. Veya özellikle eski bir sürümüne sahip olabilirsiniz du.


Bu onu açıklar! Çok teşekkürler. Du blok varsayılanı için hiçbir fikrim yoktu.
Ls'den
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.