GNU/Linux >> Belajar Linux >  >> Linux

Perintah lsof di Linux dengan Contoh

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:

  1. 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
  1. Hanya lihat file yang menggunakan tcp atau udp koneksi dengan menyediakan jenis protokol:
sudo lsof -i [udp or tcp]
  1. 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]
  1. 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.

  1. 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 .

  1. 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.

  1. 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.


Linux
  1. Perintah Tee Linux dengan Contoh

  2. Perintah JQ di Linux dengan Contoh

  3. Perintah rsync Linux dengan contoh praktis

  1. Perintah wc Linux dengan Contoh

  2. Perintah sortir Linux dengan Contoh

  3. 7 Contoh Perintah lsof di Linux

  1. Perintah Echo di Linux (Dengan Contoh)

  2. Perintah man di Linux dengan Contoh

  3. Perintah AWK di Linux dengan Contoh