
Wanneer u de Linux-du-opdracht verkrijgt u zowel de feitelijke schijfgebruik en de ware grootte van een bestand of directory. We zullen uitleggen waarom deze waarden zijn niet hetzelfde.
De werkelijke schijfgebruik en de Ware Grootte
De grootte van een bestand en de ruimte die het inneemt op uw harde schijf worden zelden hetzelfde. Schijfruimte wordt toegewezen blokken. Als een bestand is kleiner dan een blok, een hele blok is nog steeds toegewezen omdat het bestandssysteem niet hebben van een kleinere eenheid van onroerend goed te gebruiken.
Tenzij de grootte van een bestand is een exact veelvoud is van de blokken, de ruimte op de harde schijf moeten steeds worden afgerond naar de volgende hele blok. Bijvoorbeeld, als een bestand groter is dan twee blokken, maar kleiner is dan drie, duurt het nog drie blokken van ruimte op te slaan.
Twee metingen worden gebruikt in relatie tot de grootte van het bestand. De eerste is de werkelijke grootte van het bestand is het aantal bytes van de inhoud van die make-up van het bestand. De tweede is de effectieve grootte van het bestand op de vaste schijf. Dit is het aantal file-systeem blokken nodig voor het opslaan van het bestand.
Een Voorbeeld
Laten we eens kijken naar een simpel voorbeeld. We omleiden van een enkel teken in een bestand maken van een klein bestand:
echo “1” > geek.txt
Nu gebruiken we de lange formaat listing, ls, om te kijken naar lengte van het bestand:
ls -l geek.txt
De lengte van de numerieke waarde die volgt uit de dave dave inzendingen, die is twee bytes. Waarom is het twee bytes wanneer we alleen die ene personage naar het bestand? Laten we een kijkje nemen op wat er gebeurt binnen het bestand.
We gebruiken de hexdump opdracht, dat geeft ons een exacte aantal bytes en ons in staat stellen om te “zien” niet-afdrukbare tekens als hexadecimale waarden. We zullen ook gebruik maken van de -C (canonieke) optie om de uitvoer aan te tonen hexadecimale waarden in het lichaam van de output, evenals hun alfanumeriek teken middelen:
hexdump -C geek.txt
De output laat ons zien dat, begin bij offset 00000000 in de file, er is een byte die de hexadecimale waarde van 31, en één die de hexadecimale waarde van 0A. Het rechter gedeelte van de output toont deze waarden als alfanumerieke tekens, waar mogelijk.
De hexadecimale waarde van 31 wordt gebruikt om aan te geven dat het cijfer één. De hexadecimale waarde van 0A wordt gebruikt voor het weergeven van het Line Feed-karakter, die niet kan worden weergegeven als een alfanumeriek teken, dus het is weergegeven als een punt (.) in plaats daarvan. Het Line Feed-karakter is toegevoegd door echo . Standaard echostarts een nieuwe regel in na het geeft de tekst moet schrijven naar het terminal venster.
Dat strookt met de uitvoer van ls en stemt overeen met de lengte van twee bytes.
GERELATEERD: Hoe Gebruik je het ls Commando uit om een Lijst van Bestanden en Mappen op Linux
Nu gebruiken we het du commando om te kijken naar de grootte van het bestand:
du geek.txt
Het zegt dat de grootte is vier, maar vier van wat?
Er Zijn Blokken, en Dan Zijn Er Blokken
Wanneer du rapporten bestandsgrootte in blokken, de grootte van het gebruik hangt af van verschillende factoren. U kunt opgeven welke grootte van het blok moet op de commando-regel. Als u niet dwingen du gebruik van een bepaalde grootte van het blok volgt een set van regels om te beslissen welke u wilt gebruiken.
Het controleert eerst de volgende omgevingsvariabelen:
- DU_BLOCK_SIZE
- BLOCK_SIZE
- BLOKGROOTTE
Indien deze bestaan, de grootte van het blok wordt gezet, en du stopt met het controleren. Als dat niet zo is ingesteld, du standaard een blok grootte van 1024 bytes. Tenzij, dat is, een omgevingsvariabele genaamd posixly_correct zet is ingesteld. Als dat het geval is, du standaard een blok grootte van 512 bytes.
Dus, hoe kunnen we vinden in het gebruik? U kunt controleren of elke omgevingsvariabele om het uit te werken, maar er is een snellere manier. Laten we het vergelijken met de resultaten aan de grootte van het blok in het bestandssysteem gebruikt in de plaats.
Om te ontdekken van de grootte van het blok in het bestandssysteem gebruikt, gebruiken we de tune2fs-programma. Vervolgens zullen We gebruik maken van de optie-l (een lijst superblok) optie, wordt de output met een pijp door grep, en vervolgens afdrukken regels bevatten het woord “Blok.”
In dit voorbeeld kijken we naar het bestandssysteem op de eerste partitie van de eerste harde schijf sda1, en moeten we gebruik van sudo:
sudo tune2fs -l /dev/sda1 | grep Blok
Het bestandssysteem grootte van het blok 4096 bytes. Als we verdelen die door het resultaat kregen we van du (vier), het toont de standaard du blok grootte is 1024 bytes. Nu weten We dat een aantal belangrijke dingen.
Ten eerste, we weten het kleinste bedrag van bestandssysteem real estate, die kan worden besteed aan het opslaan van een bestand is 4096 bytes. Dit betekent dat zelfs onze kleine, twee-byte bestand neemt 4 MB ruimte op harde schijf.
Het tweede ding om in gedachten te houden is-toepassingen gewijd aan de verslaggeving op de harde schijf en het bestandssysteem statistieken, zoals du, ls, en tune2fs, kunnen verschillende opvattingen over wat “blok” betekent. De tune2fs toepassing rapporten waar bestandssysteem-blok maten, terwijl ls en du kan geconfigureerd worden of gedwongen gebruik te maken van andere blok maten. Die blok maten zijn niet bedoeld om zich te verhouden tot het bestandssysteem grootte van het blok; ze zijn gewoon “stukken” die commando ‘ s gebruiken in hun output.
Tot slot, andere dan het gebruik van verschillende blok maten, de antwoorden van du en tune2fs dragen dezelfde betekenis. De tune2fs resultaat was een blok van 4096 bytes, en de du resultaat was vier blokken van 1024 bytes.
Het gebruik van du
Met geen parameters voor de opdrachtregel of opties, du lijsten van de totale schijfruimte van de huidige map en alle submappen worden gebruikt.
Laten we eens kijken naar een voorbeeld:
du
De grootte wordt uitgedrukt in de standaard grootte van het blok van 1.024 bytes per blok. De hele submap boom wordt gevoerd.
Het gebruik van du op een Andere Directory
Als u wilt du rapport op in een andere map dan de huidige, u kunt langs het pad naar de map op de commando-regel:
du ~/.cach/evolutie/
Het gebruik van du op een Specifiek Bestand
Als u wilt du rapport over een specifiek bestand, langs het pad naar dat bestand op de commando-regel. U kunt ook langs een shell patroon voor een selecte groep van bestanden, zoals *.txt:
du ~/.bash_aliases
De rapportage over de Bestanden in de Mappen
Om du rapport over de bestanden in de huidige map en submappen, gebruikt u de-a (alle bestanden) optie:
du -een
Voor elke map is de grootte van elk bestand wordt gerapporteerd, evenals in totaal voor elke map.
Het Beperken Van De Directory Tree Diepte
U kunt vertellen du lijst van de map boom op een bepaalde diepte. Om dit te doen, gebruikt u de -d – (maximale diepte) optie en geef een waarde als een parameter. Merk op dat alle subdirectory ‘ s worden gescand en gebruikt voor het berekenen van de gerapporteerde totalen, maar ze zijn niet allemaal vermeld. Voor het instellen van een maximum directory diepte van één niveau, gebruik je dit commando:
du -d, 1
De output geeft de totale grootte van die submap in de huidige directory en biedt ook een totaal voor elk één.
Om een lijst van directories één niveau dieper, gebruik je dit commando:
du -d, 2
Het instellen van de Grootte van het Blok
U kunt gebruik maken van de optie blokkeren te stellen een blok grootte voor du om de huidige bewerking. Voor het gebruik van een blok grootte van een byte, gebruik je het volgende commando om de exacte maten van de mappen en bestanden:
du –blokkeren=1
Als u gebruik wilt maken van een blokgrootte van één megabyte, kunt u gebruik maken van de optie-m (megabyte) optie, dat is hetzelfde als –blokkeren=1 M:
du -m
Als u wilt dat de maten gerapporteerd in de meest geschikte grootte van het blok volgens de schijf ruimte gebruikt door de mappen en bestanden, het gebruik van de -h (human-readable) optie:
du -h
Om de schijnbare grootte van het bestand in plaats van de hoeveelheid ruimte op de harde schijf gebruikt voor het opslaan van het bestand, gebruik je de –schijnbare grootte optie:
du –schijnbare grootte
U kunt dit combineren met de-a (alle) mogelijkheid om de schijnbare grootte van elk bestand:
du –schijnbare afmetingen
Elk bestand wordt vermeld, samen met de schijnbare grootte.
De Weergave Van Alleen De Totalen
Als u wilt du om alleen het totaal voor de map, gebruik je de -s (samenvatten) optie. Ook kunt u dit combineren met andere opties, zoals de-h (human-readable) optie:
du -h-s
Hier gebruiken we het met de-schijnbare-optie grootte:
du –schijnbare-size -s
Weergeven Wijziging Keer
Om de schepping of van de laatste wijziging van datum en tijd, gebruikt je de –optie:
du –time -d, 2
Vreemde Resultaten?
Als u vreemde resultaten van du , vooral wanneer u een kruisverwijzing maten naar de uitgang van de andere commando ‘s, het is meestal te wijten aan de verschillende blok maten waarin verschillende commando’ s kunnen worden ingesteld of die waarvoor ze zijn standaard. Het kan ook het gevolg zijn van de verschillen tussen de werkelijke bestandsgrootte en de schijfruimte die nodig is om ze op te slaan.
Als u moet overeenkomen met de uitvoer van andere opdrachten, experimenteren met de optie –optie blokkeren in du.
LEES VERDER
- “Het Aanpassen van Windows 10 Nieuws App
- “Pas Op Voor Deze 7 Facebook Oplichting
- “How-To Geek Is op Zoek naar een Externe Full-Time copywriter Technologie
- “Wat Doet “IRL” Betekenen en Hoe Gebruik Je Het?
- “Hoe een Wachtwoord Manager Beschermt U tegen Phishing-berichten