Mustand: sisu ei ole veel tehniliselt ega keeleliselt täielikult kontrollitud ega toimetatud.

Peatüki vaade

Linux/Unix/macOS käsurea kiirõpik

Praegu loed peatükki Kettaruum ja süsteemi maht, mis kuulub osasse Osa II: Süsteemi pilt ja haldus.

Kettaruum ja süsteemi maht

Selles peatükis vaatame, kuidas kontrollida, kas kettal on ruumi ja millised kaustad selle ruumi ära kasutavad.

Loogika

Algajal tuleb väga kiiresti ette küsimus:

  • kuhu ruum kadus
  • kui suur mingi kaust on
  • kas kettal on üldse veel vaba ruumi

Siin on oluline eristada kahte eri vaadet:

  • faili- või kettasüsteemi üldseis
  • konkreetse kausta või puu suurus

df ja du lahendavad need kaks eri küsimust.

Kiirspikker

  • df -h näitab failisüsteemide kasutust
  • df -h . näitab selle koha failisüsteemi, kus sa parajasti oled
  • du -sh . näitab praeguse kausta kogusuurust
  • du -sh * näitab alamkaustade ja failide suurusi
  • du -sh * | sort -h sorteerib väiksemast suuremani
  • du -a . | sort -nr | less näitab suurimaid kirjeid detailsemalt

Käivita need käsud


df -h
df -h .
du -sh .
du -sh * 2>/dev/null
du -sh * 2>/dev/null | sort -h

Kui tahad näha palju detailsemalt, kuhu ruum kaob, siis väga praktiline on:


du -a . 2>/dev/null | sort -nr | less

Kui tahad vaadata oma kodukataloogi tüüpilisi “ruumisööjaid”, siis proovi:


cd "$HOME"
du -sh Downloads Documents Desktop 2>/dev/null

df: kui palju ruumi failisüsteemil on

df vastab küsimusele:

“Kui täis see kettasüsteem või mount point on?”

Näide:


df -h

Lipp -h tähendab inimesele loetavat vormi, näiteks:

  • K
  • M
  • G
  • T

Kui tahad teada just selle koha tausta, kus sa töötad, siis on väga praktiline:


df -h .

See on hea nipp, sest mitme mount point'i puhul ei huvita sind alati kogu masin, vaid just see failisüsteem, mille peal su töökaust asub.

du: kui suur see kaust ise on

du vastab küsimusele:

“Kui palju ruumi see kaust või failipuu kasutab?”

Näited:


du -sh .
du -sh *

Siin tähendab:

  • -s summary ehk kogu kokkuvõte
  • -h inimesele loetav suurus

See kombinatsioon on üks praktilisemaid ruumikontrolle kogu käsureal.

Kui tahad ainult ühte kogusummat, siis sobib hästi:


du -sh .

Kui tahad näha ka faili- ja alamkaustade taset detailsemalt, siis:


du -a .

Siin tähendab:

  • -a näita mitte ainult kaustu, vaid ka üksikfaile

Just see teeb du-st väga praktilise veaotsingutööriista siis, kui ruum on “kuskile ära kadunud”.

df ja du ei vasta samale küsimusele

Oluline vahe:

  • df räägib failisüsteemi tasemest
  • du räägib faili või kausta tasemest

Näiteks:

  • df -h võib näidata, et kettal on alles ainult 5% vaba ruumi
  • du -sh Downloads võib näidata, et suure osa sellest võtab Downloads

Kõige tavalisem töövoog

Kui ruum tundub otsas olevat, siis liigu nii:

  1. vaata df -h, kas probleem on päriselt ruumis
  2. mine kausta, kus arvad suure sisu olevat
  3. käivita du -sh *
  4. sorteeri tulemus, et näha suurimaid kohti

Näide:


cd "$HOME"
du -sh * 2>/dev/null | sort -h

Sellest on tihti kohe näha, kas ruumi söövad näiteks:

  • allalaadimised
  • vana projektikaust
  • andmefailid
  • buildi väljundid

Kui sellest ei piisa ja tahad minna sügavamale, siis järgmine väga tavaline päriselu käik on:


du -a . 2>/dev/null | sort -nr | less

Selle loogika on:

  • du -a . käib kogu puu läbi ja annab iga faili või kausta suuruse
  • sort -nr paneb suurimad kirjed ette
  • less lubab tulemust rahulikult sirvida ja otsida

See on üks kõige praktilisemaid “mis siin kõige rohkem ruumi võtab?” käsujadasid kogu Unix-laadses käsureas.

du -a | sort -nr | less päris töös

See kuju väärib eraldi väljaütlemist, sest seda kasutatakse palju rohkem kui alguses arvata võiks.

Näide:


cd "$HOME"
du -a . 2>/dev/null | sort -nr | less

Mida siin vaadata:

  • kõige ülemised read on tavaliselt suurimad ruumisööjad
  • kui näed mõnd kausta, mine sinna sisse ja korda sama käsku kitsamas kohas
  • less sees saad otsida näiteks /Downloads, /node_modules, /.git, /.venv

See on hea iteratiivne tööviis:

  1. alusta suuremast kohast
  2. leia suurim alamkaust või fail
  3. mine sinna sisse
  4. korda sama analüüsi

Inimloetav vs toores numbriline sort

Kõige universaalsem kuju on:


du -a . 2>/dev/null | sort -nr | less

Seda on hea kasutada, sest:

  • sort -n töötab numbrite peal selgelt
  • du annab suurused ühes sisemises ühikus
  • tulemus on hästi võrreldav

Mõnes keskkonnas meeldib inimestele rohkem ka inimloetav kuju:


du -ah . 2>/dev/null | sort -hr | less

Aga see eeldab, et sinu sort toetab -h lippu. Selle õpiku põhikuju on seetõttu pigem du -a . | sort -nr | less.

Peidetud kaustad võivad olla kõige suuremad

Väga sageli söövad ruumi just peidetud kaustad, mida tavaline ls kohe silma ette ei too, näiteks:

  • .git
  • .venv
  • .cache
  • .npm

Selle jaoks on väga praktiline:


du -sh .[!.]* * 2>/dev/null | sort -h

See näitab koos:

  • peidetud kirjed
  • tavalised kirjed

Kui ruum “justkui kadus ära”, siis see on üks esimesi käske, mida tasub proovida.

Ettevaatus

Kõiki suuri käske ei tasu pimesi käivitada suvalises kohas.

Näiteks:


du -sh /

võib olla aeglane ja mitte eriti informatiivne, eriti kui sul ei ole õigusi kõiki kaustu lugeda.

Praktilisem on alustada kitsamalt:

  • du -sh .
  • du -sh *
  • du -sh "$HOME"/*

Kas failide arv ja suurus on sama asi?

Ei ole.

  • üks väga suur fail võib võtta rohkem ruumi kui tuhat väikest
  • samas tuhanded väikesed failid võivad teha töö aeglaseks või segaseks

Kui tahad lisaks suurusele aru saada ka failide hulgast, siis saad vaadata näiteks:


find . -type f | wc -l

See ei mõõda ruumi, aga aitab näha, kas probleem võib olla ka väga suures failide arvus.

Minitest

  1. Uuri välja, kui palju vaba ruumi on failisüsteemil, kus asub sinu praegune töökaust.
  2. Vaata, kui suur on sinu praegune kaust kokku.
  3. Sorteeri praeguse kausta alamkaustad suuruse järgi.
  4. Pane ühe lausega kirja, mis vahe on df -h ja du -sh . vahel.