← Bash tools
TEKNİK REHBER BASH TOOLS SİSTEM KAYNAKLARI 2026

df ve du
disk alanı yönetimi

Diskin nerede dolduğunu bulmak için iki araç. df dosya sistemlerinin toplam/kullanılan/boş alanını gösterir; du dizin ve dosyaların ne kadar yer kapladığını hesaplar.

00 df ve du: farklı sorular

İki araç birbirini tamamlar ama farklı soruları yanıtlar.

df
"Diskte ne kadar yer kaldı?" — Mount noktası başına toplam/kullanılan/boş
du
"Bu dizin ne kadar yer kaplıyor?" — Alt dizinleri özyinelemeli hesaplar
bash — "Disk doldu, nerede?" sorusu
# 1. Hangi partition dolmuş?
df -h

# 2. O partition'da en büyük dizin hangisi?
du -sh /var/* | sort -rh | head -10

# 3. O dizinde en büyük alt dizin?
du -sh /var/log/* | sort -rh | head -10

01 df: dosya sistemi kullanımı

df mount edilen tüm dosya sistemlerinin disk kullanımını gösterir.

bash
# İnsan-okunur format (en yaygın kullanım)
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   32G   18G  64% /
tmpfs           7.8G  2.1G  5.7G  27% /dev/shm
/dev/sdb1       200G   87G  113G  43% /data

# Belirli dizin veya dosya sistemini sorgula
df -h /var/log        # bu dizinin bağlı olduğu FS
df -h /dev/sda1       # bu partition

# Sadece gerçek dosya sistemleri (tmpfs, devtmpfs vb. hariç)
df -hT --type=ext4
df -hx tmpfs -x devtmpfs  # belirtilenleri hariç tut

# Dosya sistemi tipi de göster
df -Th
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sda1      ext4   50G   32G   18G  64% /

# 1K blok (varsayılan, insan-okunur değil)
df

# 1M blok
df -m

# Tüm dosya sistemleri (sahte olanlar dahil)
df -a
-h
İnsan-okunur: K, M, G, T
-H
İnsan-okunur ama 1000 bazlı (1K=1000, değil 1024)
-T
Dosya sistemi türünü göster
--type=TYPE
Sadece belirtilen FS türünü göster: ext4, xfs...
-x TYPE
Belirtilen FS türünü hariç tut
-i
Inode kullanımını göster (dosya sayısı limiti)
-a
Tüm dosya sistemleri (pseudo/sahte olanlar dahil)
INODE TÜKENMESI

Disk alanı olmasına rağmen "No space left on device" hatası alınabilir — inode tükenmiş olabilir. df -i ile inode kullanımını kontrol edin. Küçük dosyaların çok sayıda bulunduğu dizinlerde (önbellek, log) sık yaşanır.

02 df: inode kullanımı ve filtreler

İnode tükenmesi ciddi bir sorun — disk dolmamış olsa da yeni dosya oluşturulamaz.

bash
# Inode kullanımı
df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/sda1      3276800  45231 3231569    2% /
/dev/sda2      6553600 6500000   53600   99% /var

# %99'a yakın inode olan FS'leri bul
df -i | awk 'NR>1 && $5+0 > 80 {print}'

# En çok dosya içeren dizini bul (inode araştırması)
find /var -xdev -type f | awk -F'/' '{print $2"/"$3}' | \
  sort | uniq -c | sort -rn | head -10

# Disk doluluk yüzdesi %85 üstündeki FS'leri listele
df -h | awk 'NR>1 && int($5) > 85 {print $0, "UYARI"}'

03 du: dizin boyutları

du disk kullanımını özyinelemeli hesaplar. Her alt dizinin ve dosyanın boyutunu verir.

bash
# Mevcut dizindeki her şeyin özeti
du -sh *

# Tek dizinin toplam boyutu
du -sh /var/log
2.3G    /var/log

# Alt öğelerin boyutunu da göster (özyinelemeli, hepsi)
du -h /var/log/

# Birden fazla hedef
du -sh /var /tmp /home

# Byte bazlı (sort ile kullanım için)
du -sb /var/log/*

# --apparent-size: disk blok değil, gerçek içerik boyutu
du -sh --apparent-size dosya.txt

# Farklı FS'e geçme: -x (xdev) ile aynı FS'de kal
du -sh -x /      # mount noktalarını geçme
-s
Summary — sadece toplam boyutu göster (alt dizinleri değil)
-h
İnsan-okunur: K, M, G
-b
Byte bazlı çıktı — sayısal sıralama için kullanışlı
-k
Kilobyte bazlı (varsayılan)
-m
Megabyte bazlı
-x
Farklı dosya sistemlerine geçme (xdev)
--apparent-size
Blok boyutu değil, gerçek içerik boyutu
--exclude=PATTERN
Eşleşen dosyaları hariç tut

04 du: derinlik kontrolü ve sıralama

--max-depth ile kaç seviye derinlikte raporlanacağını, sort ile büyükten küçüğe sıralamayı kontrol edin.

bash
# Sadece 1 seviye derinlik (alt dizin özetleri)
du -h --max-depth=1 /var/
du -hd1 /var/             # kısa form
12M     /var/cache
2.3G    /var/log
456M    /var/lib
2.8G    /var

# 2 seviye derinlik
du -hd2 /var/

# Büyükten küçüğe sırala (insan-okunur)
du -h --max-depth=1 /var/ | sort -rh

# Sayısal sıralama için -b kullan
du -b --max-depth=1 /var/ | sort -rn

# Sadece 100MB üstünü listele
du -h --max-depth=2 /var/ | \
  awk '/^[0-9]*[MG]/ && $1+0 > 100 || $1 ~ /G/'
--max-depth=N
Maksimum N seviye derinlikte raporla. Kısa: -dN
-sh * vs -hd1 .

du -sh * glob expansion kullanır — gizli dosyaları (.cache gibi) dahil etmez. du -hd1 . dizine girer ve tüm içeriği (gizli dahil) raporlar. Tam sonuç için du -hd1 . tercih edin.

05 du + sort: en büyüğü bul

Disk doluluğunu araştırmanın klasik döngüsü: df ile hangi FS, du + sort ile nerede.

bash
# Klasik: /var altındaki en büyük 10 öğe
du -sh /var/* 2>/dev/null | sort -rh | head -10

# Tüm alt dizinleri büyükten küçüğe (tam arama)
du -hx /var/ 2>/dev/null | sort -rh | head -20

# 1GB üstü dizinler
du -BG --max-depth=4 /var/ 2>/dev/null \
  | awk '$1+0 > 1' \
  | sort -rn \
  | head -10

# ncdu: etkileşimli disk kullanım arayüzü (önerilir)
ncdu /var/
# j/k ile gezin, d ile sil, ? yardım, q çık
ncdu ARACI

ncdu (NCurses Disk Usage) etkileşimli bir disk kullanım tarayıcısıdır. Büyük diskleri araştırmak için du + sort'tan çok daha kullanışlıdır. Çoğu Linux dağıtımında: apt install ncdu veya yum install ncdu

06 Pratik vakalar

Disk yönetiminin gerçek dünya senaryoları.

bash — Disk doldu, soruşturma betiği
# Adım 1: Hangi FS dolmuş?
df -h | awk 'NR>1 && int($5) > 80 {print $5, $6}'
91% /var

# Adım 2: /var'da en büyük öğeler
du -hd1 /var/ 2>/dev/null | sort -rh
12G     /var
8.5G    /var/log
2.1G    /var/lib
...

# Adım 3: /var/log'da en büyük dosyalar
find /var/log -type f -size +100M | xargs du -sh | sort -rh
bash — Disk doluluk izleme scripti
# %85 üstündeyse uyarı gönder
df -h | awk 'NR > 1 {
  gsub(/%/, "", $5)
  if ($5+0 >= 85)
    print "UYARI: " $6 " %"$5 " dolu (" $4 " boş)"
}'

# Cron'a ekle (15 dakikada bir)
# */15 * * * * /usr/local/bin/disk-check.sh | mail -s "Disk Uyarı" ops@example.com
bash — Hangi process silinmiş dosyayı tutuyor?
# df'te gözüken ama du'da görünmeyen alan = silinmiş ama açık dosya
lsof +L1                    # link sayısı 0 olan açık dosyalar
lsof +L1 -a +d /var/log    # /var/log altında

# Çözüm: process'i yeniden başlat veya log dosyasını truncate et
truncate -s 0 /var/log/devops/app.log   # sıfırla (sil değil)
bash — Docker disk kullanımı
# Docker'ın ne kadar yer kapladığını göster
docker system df

# Kullanılmayan her şeyi temizle
docker system prune -af --volumes

Hatırlanacaklar

  • df -h: dosya sistemi doluluk durumu — ilk kontrol
  • df -i: inode tükenmesi — "disk dolu" hatası disk dolu olmadan
  • du -sh /yol/*: dizindeki öğelerin özet boyutları
  • du -hd1 /yol/: 1 seviye derinlikte insan-okunur (-sh *'dan güvenli)
  • du -sh * | sort -rh | head -10: en büyük 10 öğe
  • df vs du farkı olunca: silinmiş ama açık dosya → lsof +L1
  • ncdu: etkileşimli disk araştırması için en iyi araç

Devam: free, uptime, uname — sistem bilgisi · süreç ve sistem izleme — ps, top, lsof