
Di Linux, semuanya dianggap sebagai file dan diatur di dalam direktori. lsof (List of Open File) menampilkan daftar file yang dibuka. Ini terutama membantu untuk mengetahui informasi tentang proses yang membuka file. Selain file, ia dapat mencantumkan direktori, file khusus blok, perpustakaan bersama, file khusus karakter, pipa biasa, pipa bernama, soket internet, soket domain UNIX, dan banyak lainnya.
Dalam tutorial ini, kita belajar tentang lsof command di Linux menggunakan contoh yang mudah dipahami .
perintah lsof
Perintah lsof secara default tersedia di sebagian besar distribusi Linux. Sangat umum perintah lsof digunakan ketika kita tidak dapat meng-unmount disk, maka perintah lsof membantu menemukan file yang terbuka dan proses yang menyebabkannya.
Sintaks:
lsof [options] [names]
Sintaks di atas akan mencantumkan semua file yang telah dibuka oleh semua proses dalam sistem.
1. Daftar semua file yang terbuka
Untuk mendapatkan daftar file yang terbuka dengan cepat, ketik lsof. Ini mencantumkan semua file yang telah dibuka oleh berbagai proses sistem.
$ lsof

Biasanya outputnya akan sangat panjang, Anda menggunakan $ sudo lsof | more
, jika Anda ingin melihat konten satu layar pada satu waktu.
2. Daftar file yang terbuka menurut nama pengguna
lsof memiliki perintah yang dapat digunakan untuk menemukan daftar file tertentu yang dibuka oleh pengguna tertentu.
Untuk mencantumkan file yang terbuka menurut nama pengguna gunakan perintah berikut:
$ lsof -u bobbin

Untuk beberapa pengguna gunakan sintaks berikut:
$ lsof -u [username1] -u [username2]
ATAU
$ lsof -u [username1], [username2]
Untuk membuat daftar file yang terbuka kecuali untuk pengguna tertentu:
$ lsof -u ^root
Untuk mencantumkan hanya id proses, gunakan -t
pilihan.
$ lsof -t -u sonar
Ini akan membantu jika Anda perlu mematikan semua proses yang terkait dengan penggunaan tertentu.
$ kill -9 lsof -t -u sonar
3. Daftar file yang terbuka menurut proses
lsof juga dapat digunakan untuk membuat daftar file yang dibuka oleh proses tertentu dengan menggunakan -c
pilihan diikuti dengan nama proses.
Misalnya untuk membuat daftar semua file yang terbuka dengan ssh:
$ lsof -c ssh

4. Daftar file yang terbuka menurut nama file
Kita dapat menentukan nama file sebagai argumen untuk mendaftar semua proses yang telah membuka file tertentu.
Untuk membuat daftar semua proses yang dibuka oleh file /var/log/messages, ketik:
$ lsof /var/log/messages

5. Daftar file yang terbuka menurut ID Proses
Setiap file diberi ID proses. Sebuah proses tunggal dapat membuka sejumlah besar file. Kita dapat menggunakan perintah lsof untuk membuat daftar semua file yang terbuka untuk ID Proses yang diberikan.
Misalnya untuk membuat daftar file yang terbuka dengan ID Proses 2, ketik:
$ lsof -p 2

Memetikan untuk membuat daftar file yang terbuka untuk beberapa ID proses, ketik
$ lsof -p 2,3
Sebuah sistem berisi sejumlah besar proses, yang masing-masing memiliki file yang terbuka untuk digunakan. Suatu proses mungkin memiliki banyak proses anak, dan proses ini juga dikenal sebagai proses induk.
Perintah lsof digunakan dengan -R
pilihan untuk mendapatkan daftar file yang dibuka oleh PPID (Induk Proses IDentifikasi).
$ lsof -R

Anda dapat dari output kolom ke-5 akan menampilkan PPID dari file yang terbuka.
Untuk menemukan PPID untuk PID tertentu, ketik:
$ lsof -p [PID] -R
6. Mencantumkan file yang terbuka di Direktori
Untuk membuat daftar file yang terbuka di direktori tertentu, kita dapat menggunakan perintah lsof.
Gunakan +d
opsi untuk menampilkan daftar file yang terbuka di direktori yang disediakan, namun tidak masuk ke subdirektori.
Contoh berikut mencari file yang terbuka di direktori /var/log:
$ lsof +d /var/log

Opsi +D memerintahkan lsof untuk mencari seluruh kedalaman direktori untuk semua instance yang terbuka serta semua file dan direktori yang ada di dalamnya.
Dalam hal ini, lsof mencari file yang terbuka di /var/log dan subdirektorinya:
$ lsof +D /var/log

7. Daftar file yang terbuka dengan protokol jaringan
Suatu sistem dapat dihubungkan ke berbagai jaringan untuk berbagai tujuan. Segala sesuatu di Linux adalah file, kita dapat memeriksa file yang dibuka oleh beberapa koneksi jaringan di sistem.
Untuk membuat daftar file yang terbuka dalam protokol TCP, kita dapat menjalankan perintah berikut.
$ lsof -i TCP

Untuk membuat daftar file yang terbuka dalam protokol UDP, kita dapat menjalankan perintah berikut.
$ sudo lsof -i UDP

8. Daftar file yang terbuka menurut nomor port
lsof memiliki perintah yang secara khusus mencantumkan file yang terbuka pada nomor port tertentu untuk mencantumkan semua proses yang berjalan pada port tersebut.
Misalnya untuk membuat daftar file yang terbuka pada nomor port 443
$ lsof -i :443

Anda dapat membuat daftar file yang terbuka untuk beberapa nomor port sebagai berikut:
$ lsof -i :80,443
Anda juga dapat membuat daftar file TCP atau UDP yang terbuka berdasarkan rentang port.
$ lsof -i TCP:1-49151
9. Daftar file yang terbuka dengan IPv4/IPv6
Ada opsi di lsof untuk membuat daftar file jaringan IPv4 atau IPv6 terbuka.
Untuk menampilkan file terbuka IPv4, ketik
$ lsof -i4

Sintaks berikut dapat digunakan untuk menampilkan file terbuka IPv6:
$ lsof -i6
10. Jalankan lsof terus menerus
Mode pengulangan memungkinkan lsof untuk terus mengulang dengan pembaruan dengan penundaan yang ditentukan. Mode pengulangan dapat diaktifkan dengan menggunakan opsi '-r' atau '+r', di mana '+r' akan berakhir ketika tidak ada file terbuka yang ditemukan dan '-r' akan terus terdaftar sampai interupsi manual dimulai. Setiap keluaran siklus penundaan akan dipisahkan dengan menggunakan ‘========’.
Sintaks:
$ lsof [options] -r/+r[time-interval]
Misalnya:
$ lsof -u sonar -r5
header perintah lsof
lsof
memiliki berbagai kolom.
COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME
Nama perintah UNIX yang terkait dengan proses disimpan di COMMAND
kolom.
PID
menampilkan ID proses dari perintah.
USER
menampilkan nama pengguna yang terkait dengan proses berikut.
TID
menunjukkan ID tugas.
FD
adalah deskriptor file yang menyertakan singkatan seperti cwd (Current Working Directory), txt (File Teks), mem (Memory-mapped file), rtd (direktori root), dan banyak lainnya.
TYPE
adalah singkatan dari jenis file tertentu, seperti REG (Regular file), DIR (Directory), CHR (Character special file), dan sebagainya.
DEVICE
berisi nomor perangkat.
SIZE/OFF
berisi ukuran file atau offset file dalam byte.
NODE
nilai kolom mewakili nomor simpul dari file lokal.
NAME
menampilkan nama titik pemasangan file dan sistem file, serta alamat Internet.
Kesimpulan
Dalam tutorial ini, kita belajar tentang perintah lsof dan kegunaannya dengan contoh. lsof menyediakan sejumlah opsi untuk menyesuaikan outputnya untuk memenuhi kebutuhan Anda. Ini memungkinkan Anda dengan mudah dan cepat menggabungkan beberapa argumen untuk mendapatkan output yang diperlukan.