Kodeloka
  1. Kodeloka
  2. Kelas Linux & Shell
  3. Materi

1 · Fondasi · Modul 1 dari 8

Filesystem, Path & Navigasi

Struktur direktori Linux yang bukan sekadar konvensi, dan kenapa memahaminya menjelaskan banyak hal saat bekerja dengan kontainer.

Semuanya Satu Pohon

Berbeda dari Windows yang punya C: dan D:, Linux hanya punya satu akar: /. Disk tambahan, partisi, bahkan jaringan tidak menjadi drive terpisah — mereka di-mount ke suatu direktori di dalam pohon yang sama.

/
├── bin, sbin  → program sistem (biasanya symlink ke /usr/bin)
├── boot       → kernel dan bootloader
├── dev        → berkas perangkat (/dev/null, /dev/sda)
├── etc        → SELURUH konfigurasi sistem
├── home       → direktori pengguna
├── lib        → pustaka bersama
├── mnt, media → titik mount
├── opt        → perangkat lunak pihak ketiga
├── proc       → semu — informasi kernel & proses
├── root       → home milik pengguna root
├── run        → data runtime (socket, PID)
├── sys        → semu — antarmuka ke perangkat
├── tmp        → sementara, dibersihkan saat reboot
├── usr        → program & data pengguna
└── var        → data yang berubah: log, cache, database
💡 /proc dan /sys bukan berkas sungguhan

Keduanya adalah filesystem semu yang dihasilkan kernel saat dibaca. Isinya nol byte di disk. Inilah yang membuat perintah seperti cat /proc/cpuinfo atau cat /proc/<pid>/limits bekerja — Anda sedang bertanya langsung ke kernel, bukan membaca berkas.

cat /proc/meminfo | head -5
cat /proc/loadavg
cat /proc/1/cgroup          # di dalam kontainer, ini memberi tahu banyak hal

Path Absolut vs Relatif

/etc/nginx/nginx.conf     absolut  — selalu dari akar
./skrip.sh                relatif  — dari direktori sekarang
../data                   naik satu tingkat
~/proyek                  home pengguna saat ini
~budi/proyek              home pengguna budi
⚠️ Kenapa ./skrip.sh butuh titik-garis miring

Shell mencari program di direktori yang terdaftar pada $PATH, dan direktori saat ini tidak termasuk — ini disengaja demi keamanan. Tanpa itu, seseorang bisa menaruh berkas bernama ls berisi kode berbahaya di sebuah direktori, dan Anda menjalankannya tanpa sadar hanya dengan mengetik ls di sana.

Navigasi & Pencarian

pwd                       # di mana saya sekarang
cd -                      # kembali ke direktori sebelumnya
ls -lh                    # daftar dengan ukuran terbaca manusia
ls -lha                   # termasuk berkas tersembunyi
ls -lt                    # urut berdasarkan waktu ubah

# Menemukan berkas
find /var/log -name "*.log" -mtime -7        # diubah 7 hari terakhir
find . -type f -size +100M                   # lebih besar dari 100 MB
find /etc -name "*.conf" -exec grep -l "listen" {} \;

# Lebih cepat bila tersedia
locate nginx.conf
which docker              # lokasi program di $PATH
type -a python            # semua kemunculan, termasuk alias

Ruang Disk

df -h                     # ruang per filesystem
du -sh /var/log/*         # ukuran tiap isi direktori
du -sh . | sort -h        # terbesar terakhir

# Menemukan pemakan ruang terbesar
du -h /var --max-depth=2 | sort -rh | head -20
🚫 Disk penuh padahal du bilang masih lega

Ini situasi yang membingungkan dan sering terjadi. Penyebabnya: sebuah proses masih memegang berkas yang sudah dihapus. Ruangnya tidak dibebaskan sampai proses itu menutupnya atau berhenti — sementara du tidak melihatnya karena berkasnya sudah tidak ada di direktori.

lsof +L1                  # berkas terhapus yang masih dipegang proses
# Solusinya: restart proses tersebut, biasanya proses logging.

# Penyebab kedua: inode habis meski byte masih tersisa
df -i                     # periksa pemakaian inode