Pendahuluan
lsof
perintah singkatan dari List Open Files dan menunjukkan file yang terbuka dan proses mana yang menggunakannya. Karena Linux melihat setiap objek sebagai file, seperti perangkat, direktori, dll., file terbuka yang tidak teridentifikasi mencegah pengguna untuk memodifikasinya.
Selain itu, banyaknya file membuat sulit untuk menemukan proses berbahaya. lsof
perintah membantu mengidentifikasi proses ini sehingga Anda dapat menghentikannya.
Artikel ini akan menjelaskan cara menggunakan perintah lsof di Linux dengan contoh.
Prasyarat
- Akses ke terminal.
- Hak istimewa grup Sudo.
- Hak istimewa root untuk beberapa perintah.
lsof Sintaks Perintah
lsof
sintaks perintahnya adalah:
lsof [options]
Catatan: Untuk sebagian besar perintah, jalankan lsof
dengan sudo
untuk menghindari kesalahan "izin ditolak".
lsof Opsi Perintah
lsof
perintah memiliki banyak pilihan. Tabel di bawah ini mencakup argumen yang paling sering digunakan:
Opsi | Deskripsi |
---|---|
lsof | Mencantumkan semua file yang terbuka. |
-b | Menekan blok kernel. |
/ [file system] / | Menampilkan file yang terbuka dalam sistem file tertentu. |
/dev/tty* | Menampilkan file yang terkait dengan terminal. |
-u [username] | Mencetak semua file yang dibuka oleh pengguna. |
-u ^[username] | Mencetak semua file yang dibuka oleh semua orang kecuali pengguna tertentu. |
-c [process] | Mencantumkan semua file yang diakses oleh proses tertentu. |
-p [process ID] | Menampilkan semua file terbuka yang terkait dengan ID proses tertentu. |
-p ^[process ID] | Menampilkan file yang dibuka oleh semua PID lainnya. |
-R | Mencantumkan ID proses induk. |
+D [directory path] | Mencetak semua file yang terbuka dalam direktori. |
-i | Menampilkan semua file yang diakses oleh koneksi jaringan. |
-i [IP version number] | Memfilter file berdasarkan IP-nya. |
- i [udp or tcp] | Memfilter file yang terbuka berdasarkan jenis koneksi (TCP atau UDP). |
-i :[port number] | Menemukan proses yang berjalan pada port tertentu. |
-i :[port range] | Menemukan proses yang berjalan pada rentang port tertentu. |
-t [file name] | Mencantumkan ID proses yang telah mengakses file tertentu. |
# kill -9 'lsof -t -u [user] ' | Membunuh semua proses pengguna. |
-d mem | Menampilkan semua file yang dipetakan memori. |
[path] | grep deleted | Mencetak file yang dihapus dan terkunci. |
man | Membuka halaman manual. |
lsof Contoh Perintah
lsof
menggabungkan argumen yang berbeda yang memungkinkan pengguna untuk mengelola aktivitas sistem dan administrasi jaringan. Diuraikan di bawah ini adalah yang paling umum lsof
kasus penggunaan.
Mencantumkan Semua File
Saat dijalankan tanpa opsi apa pun, lsof
daftar semua file yang dibuka oleh proses apa pun:
sudo lsof
lsof
perintah menghasilkan banyak detail. Oleh karena itu, selalu pipa lsof
dengan less
untuk menampilkan output satu halaman pada satu waktu.
sudo lsof | less
Untuk menavigasi ke bagian bawah daftar, tekan Enter atau panah bawah . Keluar dari daftar dengan Q .
lsof
output terdiri dari kolom yang berbeda. Namun, tidak semua kolom berlaku untuk setiap jenis file. Judulnya terlihat seperti ini:
Kolom default di lsof
keluarannya adalah:
- PERINTAH - Mengacu pada perintah yang terkait dengan proses yang membuka file.
- PID - Nomor identifikasi proses dari proses yang menjalankan file.
- TID - Merupakan nomor identifikasi tugas untuk proses masing-masing. Kosong jika suatu proses, bukan tugas, telah membuka file.
- TASKCMD - Mengacu pada nama perintah di kolom pertama. Namun, TASKCMD dapat berbeda ketika tugas mengubah nama perintahnya.
- USER - Nama pengguna yang menjalankan proses. Kolom berisi User ID atau nama.
- FD - Apakah deskriptor file yang digunakan proses untuk mengaitkan dengan file.
- JENIS - Menampilkan jenis file dan nomor identifikasinya.
- PERANGKAT - Mencetak nomor perangkat yang terkait dengan file.
- UKURAN/MATI - Mewakili nilai atau file yang diambil selama runtime (ukuran atau offset).
- TIDAK - Nomor node file lokal atau nomor inode direktori/direktori induk.
- NAMA - Menampilkan jalur atau tautan ke file.
Sembunyikan Blok Kernel
Default lsof
output juga termasuk file yang dibuka oleh kernel. Untuk menekan blok kernel, jalankan lsof
dengan -b
bendera:
sudo lsof -b
Menampilkan File dari Sistem File Tertentu
Gunakan lsof
perintah untuk menampilkan file yang terbuka dalam sistem file tertentu:
sudo lsof / [file system] /
Misalnya, untuk melihat semua file yang terbuka di sys
direktori, jalankan:
sudo lsof / sys/
Cetak File Terminal
Buat daftar semua file terbuka yang terhubung ke terminal dengan menargetkan dev
direktori dengan lsof
:
lsof /dev/tty*
Tampilkan Semua File yang Diakses oleh Pengguna
Gunakan lsof
dengan -u
tandai untuk menampilkan file yang dibuka oleh pengguna tertentu:
sudo lsof -u [username]
Misalnya:
lsof -u saraz
Perintah tersebut mencantumkan file yang dibuka oleh saraz .
Untuk mencetak semua file yang dibuka oleh semua orang kecuali pengguna tertentu, jalankan:
sudo lsof -u ^[username]
Misalnya:
lsof -u ^saraz
Outputnya menunjukkan file yang dikendalikan oleh pengguna selain saraz .
Menampilkan File yang Digunakan oleh Proses
-c
flag membuka semua file yang digunakan oleh suatu proses:
sudo lsof -c [process]
Misalnya, untuk membuat daftar file yang dibuka oleh wpa_suppl
proses, jalankan:
sudo lsof -c wpa_suppl
Pilihan lain adalah menggunakan hanya sebagian dari nama program:
sudo lsof -c wpa
lsof
mengembalikan semua program yang dimulai dengan istilah wpa
, yang mencakup wpa_suppl .
Selain itu, -c
opsi memberikan output yang sama seperti perpipaan lsof
dengan grep :
sudo lsof | grep wpa_suppl
Cetak File yang Dibuka oleh PID Tertentu
Gunakan -p
opsi untuk memfilter file tertentu dengan nomor ID Proses (PID). Misalnya, output di bawah ini menunjukkan semua file dengan PID 635.
sudo lsof -p 635
Di sisi lain, tambahkan tanda sisipan ^
simbol untuk mencetak file yang dibuka oleh semua proses lain:
sudo lsof -p ^635
Selain itu, menggabungkan lsof
dengan -R
flag menambahkan Nomor Identifikasi Proses Induk (PPID) ke output.
Untuk mendapatkan info PPID untuk PID tertentu, jalankan:
sudo lsof -p [PID] -R
Misalnya, untuk mendapatkan PPID untuk 635 PID, ketik:
sudo lsof -p 635 -R
Outputnya menunjukkan kolom PPID yang ditambahkan ke header.
Tampilkan File Di Bawah Direktori
Untuk melihat semua file yang telah dibuka di bawah direktori, gunakan perintah berikut:
sudo lsof +D [directory path]
Opsi ini juga mengulang sub direktori. Untuk menghindari pengulangan, gunakan +d
bendera.
Tampilkan File yang Diakses oleh Koneksi Jaringan
Gunakan -i
tandai dengan lsof
untuk memeriksa file mana yang dibuka oleh koneksi jaringan. Jalankan perintah ini:
sudo lsof -i
Contoh di atas mencetak file yang dibuka oleh koneksi jaringan, apa pun jenis koneksinya.
-i
flag menambahkan banyak keserbagunaan pada lsof
, memungkinkan pengguna untuk memfilter file berdasarkan kriteria yang berbeda. Gunakan lsof -i [options]
ke:
- Filter file berdasarkan IP-nya dengan:
sudo lsof -i [IP version number]
Misalnya, jalankan perintah ini untuk hanya menampilkan file IPv4:
sudo lsof -i 4
Sebaliknya, cetak hanya file IPv6 dengan:
sudo lsof -i 6
- Hanya lihat file yang menggunakan tcp atau udp koneksi dengan menyediakan jenis protokol:
sudo lsof -i [udp or tcp]
- Temukan proses yang berjalan pada port tertentu . Opsi ini berguna untuk memeriksa file mana yang mencegah aplikasi lain mengikat ke port tertentu. Jalankan perintah dengan nomor port atau nama layanan dari kolom nama:
sudo lsof -i :[port number/name]
- Cetak semua file yang dibuka pada rentang port tertentu .
Misalnya, untuk membuat daftar File terbuka dari Port UDP berkisar 1-1024, jalankan:
Daftar ID Proses yang Menyimpan File Terbuka
Untuk melihat PID untuk proses yang telah membuka file tertentu, gunakan -t
dan berikan nama file.
lsof -t [file name]
Bunuh Semua Proses Pengguna
-t
flag juga mematikan semua proses oleh pengguna tertentu. Misalnya, untuk mematikan semua proses oleh pengguna notsara , jalankan perintah ini sebagai root:
# kill -9 'lsof -t -u notsara'
Cetak Semua File yang Dipetakan Memori
lsof
mencetak proses mana yang memiliki file yang dipetakan memori. Untuk menampilkan proses ini, jalankan:
lsof -d mem
Menampilkan File Terkunci yang Dihapus
Suatu proses terkadang membuat file besar tetap terkunci bahkan setelah dihapus, menghabiskan ruang disk.
Gunakan Lsof
untuk menemukan file yang dihapus di Linux tetapi masih dikunci oleh satu atau lebih proses.
Misalnya, temukan file yang dihapus dari direktori root menggunakan garis miring (/
) sebagai simbol jalur:
sudo lsof [path] | grep deleted
Gabungkan Beberapa Opsi
lsof
perintah memungkinkan beberapa item pencarian di baris perintah. Gunakan DAN dan ATAU logika untuk menggabungkan argumen yang berbeda untuk mendapatkan hasil yang spesifik. Di bawah ini adalah contoh paling umum.
- Mencantumkan file yang dibuka oleh pengguna tertentu atau proses dengan:
sudo lsof -u [username] -c [process]
Output mencetak kedua file yang dibuka oleh pengguna saraz dan yang digunakan oleh proses snapd .
- Hanya tampilkan file yang cocok dengan istilah penelusuran pertama dan istilah penelusuran kedua dengan operator logika
-a
(dan):
sudo lsof -u [username] -c [process] -a
Dalam hal ini, lsof
hanya menampilkan file yang dibuka oleh pengguna saraz dan bash proses.
- Temukan semua koneksi jaringan pengguna:
sudo lsof -i -u [username] -a
-i
dan -a
bendera dengan lsof
perintah cetak semua aktivitas pengguna root .
Pelajari Lebih Lanjut Tentang lsof
lsof
perintah memiliki lebih banyak opsi daripada perintah Linux lainnya. man
halaman hampir 2000 baris dan menawarkan banyak informasi.
Untuk menjelajahi kemungkinan perintah, jalankan:
man lsof
Kesimpulan
Tutorial ini menunjukkan cara menggunakan lsof
perintah untuk memecahkan masalah keamanan potensial dan masalah sistem dengan contoh praktis.
Selanjutnya, pelajari cara menyalin file dan direktori di Linux dan membandingkan dua file menggunakan perintah diff Linux.