Gambaran Umum
Masalah seperti ‘konflik port’ atau ‘ruang disk tidak berkurang meski file telah dihapus’ yang terjadi selama pengoperasian sistem Linux dapat segera diselesaikan dengan perintah lsof. Dalam artikel ini, kita akan mempelajari teknik-teknik penting untuk menerapkan lsof secara langsung di lingkungan praktis Linux, di mana segala sesuatunya dikelola sebagai file. Pelajari keahlian troubleshooting penting bagi engineer sistem langkah demi langkah, mulai dari melacak port hingga melepaskan kunci file (file lock).
Pemeriksaan Dasar lsof dan Memeriksa File yang Dibuka oleh Pengguna/Proses Tertentu
Jalankan perintah command -v lsof >/dev/null 2>&1 || (apt-get update -qq && apt-get install -y lsof) untuk memeriksa apakah perintah lsof telah terinstal di sistem, dan jika belum, instal paket tersebut.

Jalankan perintah lsof -v untuk memeriksa versi instalasi dan informasi build dari perintah lsof.
⚙️ [Opsi Utama]
-u : Menampilkan daftar file dan proses yang sedang dibuka oleh akun pengguna tertentu.-c : Memfilter daftar file yang dibuka oleh proses yang namanya diawali dengan nama proses yang ditentukan.-p : Memeriksa daftar file yang sedang dibuka oleh Process ID (PID) tertentu.-i : Menampilkan proses yang menggunakan soket jaringan dan port tertentu.+D : Mencari daftar file yang terbuka dalam direktori yang ditentukan dan subjalurnya secara rekursif.-t : Hanya menampilkan Process ID (PID) secara ringkas per baris, sangat berguna untuk integrasi skrip.

Jalankan perintah mkdir -p /tmp/lsof_lab && echo '테스트 파일 내용' > /tmp/lsof_lab/sample.txt untuk menyiapkan direktori pengujian dan file sampel untuk latihan lsof.

Jalankan perintah tail -f /tmp/lsof_lab/sample.txt & di latar belakang agar proses terus membuka file sampel yang dibuat dan melacaknya.

Perintah lsof -u $(whoami) | head -n 15 memeriksa hingga 15 baris teratas dari daftar file yang digunakan oleh proses yang sedang dijalankan oleh pengguna yang saat ini masuk.
Anda dapat memeriksa informasi terperinci mengenai file-file yang dibuka oleh akun saat ini, seperti pustaka sistem dasar dan file executable.

Perintah lsof -c tail mencari dan menampilkan daftar file serta pustaka yang sedang dibuka oleh proses bernama tail.
Melalui ini, Anda dapat memeriksa deskriptor file dan shared library apa saja yang direferensikan oleh perintah tail yang dijalankan di latar belakang.

Setelah menyelesaikan latihan, jalankan perintah killall tail 2>/dev/null || true untuk menghentikan proses tail yang berjalan di latar belakang secara aman dan membersihkannya.

Pemeriksaan Port Jaringan dan Troubleshooting Konflik Proses
Periksa apakah python3 terinstal di sistem untuk menyiapkan lingkungan latihan pemeriksaan port dan konflik proses, lalu instal paket tersebut jika belum terpasang.

Jalankan server web sederhana di latar belakang pada port 8080 untuk menguji penggunaan port jaringan.

Tunggu selama 1 detik hingga proses server web yang dijalankan di latar belakang berhasil terikat (bind) ke port 8080.

Perintah lsof -i :8080 memeriksa proses yang sedang menggunakan port 8080.
Melalui hasil output, Anda dapat memastikan bahwa proses python3 dengan PID 371 sedang menunggu dalam status LISTEN pada port 8080.

Perintah lsof -i -P -n | head -n 15 menampilkan daftar soket jaringan sistem dengan cepat dalam bentuk angka tanpa mengonversi nomor port dan alamat IP.
Karena melewati proses reverse DNS lookup dan pemetaan nama port layanan, Anda dapat memahami status penggunaan port dengan cepat tanpa penundaan.

Perintah lsof -i TCP:8080 -sTCP:LISTEN memfilter dan menampilkan secara presisi hanya koneksi yang menggunakan protokol TCP dan berada dalam status LISTEN pada port 8080.
Ini berguna untuk mengidentifikasi secara akurat hanya proses daemon yang sebenarnya sedang menunggu koneksi pada port tersebut, tanpa menyertakan koneksi sesi yang tidak diperlukan.

Setelah menyelesaikan latihan, hentikan paksa proses web server di latar belakang yang menggunakan port TCP 8080 untuk membersihkan sumber daya yang ditempati.

Melacak Direktori Tertentu dan File Penyebab Gagal Unmount (Device Busy)
Buat direktori pengujian dan navigasikan ke jalur tersebut untuk mereproduksi situasi penggunaan direktori dan hambatan pelepasan kaitan (unmount).

Jalankan perintah echo '작업 중인 파일' > active_work.log untuk membuat file log target yang akan diakses oleh proses.

Jalankan proses sleep di latar belakang dengan mereferensikan file yang dibuat sebagai input standar agar file tersebut terus digunakan.

Ubah direktori kerja ke direktori home untuk memeriksa status dari luar direktori yang sedang ditempati.

Perintah lsof +D /tmp/mount_test melacak dan menampilkan secara rekursif semua file dan proses yang terbuka di direktori yang ditentukan serta subjalurnya.
Dari hasil output, Anda dapat memastikan bahwa proses sleep dengan PID 450 mereferensikan direktori tersebut sebagai direktori kerja saat ini (cwd) dan membuka file active_work.log dalam mode baca (0r), yang menjadi penyebab kegagalan unmount.

Setelah latihan selesai, hentikan proses sleep di latar belakang yang menempati direktori dan file secara aman.

Hapus direktori uji sementara beserta seluruh subfilenya yang digunakan dalam latihan untuk membersihkan sumber daya sistem.

Memulihkan dan Membersihkan File Hantu (deleted) yang Telah Dihapus tetapi Masih Menggunakan Disk
Buat direktori uji untuk simulasi kebocoran ruang disk dan buat file uji berukuran besar sebesar 10MB.

Lacak di latar belakang agar proses terus mempertahankan handel dari file besar yang dibuat.

Hapus file besar yang sedang dibuka secara paksa dari sistem file untuk mereproduksi situasi kebocoran file hantu (ghost file).

Perintah lsof | grep '(deleted)' | head -n 5' memeriksa daftar file yang telah dihapus dari sistem file tetapi masih dibuka oleh proses sehingga tetap memakan ruang disk.
Melalui ini, Anda dapat dengan cepat melacak file hantu dan proses terkait yang ruang disknya tidak dilepaskan meskipun telah dihapus dengan perintah rm.

Periksa daftar file descriptor di direktori /proc/$TARGET_PID/fd/ berdasarkan Process ID yang diekstrak dengan lsof -t.
Dengan memeriksa langsung nomor file descriptor yang direferensikan oleh proses, Anda dapat mengosongkan ruang tanpa me-restart proses atau, jika perlu, memulihkan data asli yang dihapus melalui deskriptor tersebut.
![TARGET_PID=$(lsof -t /tmp/leak_test/large.img 2>/dev/null | head -n 1) && [ -n “$TARGET_PID” ] && ls -l /proc/$TARGET_PID/fd/ || true](/ubuntu/20261007_150808_104/captures/s04_c05_TARGET_PID___lsof_-t__tmp_leak_test_large_img_2__d.png)
Setelah menyelesaikan latihan, hentikan proses latar belakang yang masih menahan file hantu secara aman untuk mengembalikan ruang disk sepenuhnya.

Hapus direktori uji sementara yang digunakan untuk latihan sepenuhnya guna membersihkan sumber daya sistem.

Sejauh ini, kita telah melihat sekilas tips praktis utama menggunakan perintah lsof, mulai dari mengatasi konflik port hingga mengamankan ruang disk dari file yang dihapus.
Semoga rangkuman ini sangat membantu dalam menyelesaikan masalah selama pengoperasian server dan troubleshooting yang sebenarnya.