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
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
./skrip.sh butuh titik-garis miringShell 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
du bilang masih legaIni 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