GNU/Linux >> Belajar Linux >  >> Linux

7 Contoh Perintah lsof di Linux

Saya kira pada suatu saat Anda bertanya-tanya apakah ada cara untuk menampilkan file yang dibuka oleh suatu proses atau pengguna. Hal baiknya adalah jawaban untuk pertanyaan itu adalah perintah lsof.

Anda mungkin sudah tahu bahwa perintah ls adalah kependekan dari 'daftar'. lsof adalah singkatan dari 'Daftar File Terbuka'. Dan itulah tepatnya yang dilakukannya, membuat daftar file yang terbuka berdasarkan proses, pengguna, dan ID proses.

Mari saya tunjukkan beberapa penggunaan paling umum dari perintah lsof.

lsof contoh perintah

Jika Anda menggunakan perintah lsof tanpa opsi dan argumen apa pun, itu akan mencantumkan semua file yang dibuka oleh semua proses dalam sistem.

lsof

Outputnya harus seperti ini:

COMMAND     PID   TID             USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME

systemd       1                   root  cwd       DIR              252,1      4096          2 /

systemd       1                   root  rtd       DIR              252,1      4096          2 /

systemd       1                   root  txt       REG              252,1   1595792      17384 /lib/systemd/systemd

systemd       1                   root  mem       REG              252,1   1700792       2077 /lib/x86_64-linux-gnu/libm-2.27.so

Outputnya sebagian besar cukup jelas tetapi Anda mungkin masih bertanya-tanya tentang kolom FD dan TYPE.

FD berarti deskriptor file. Beberapa nilai umum untuk FD adalah:

  • cwd – Direktori Kerja Saat Ini
  • txt – File teks
  • mem ​​– File yang dipetakan memori
  • mmap – Perangkat yang dipetakan dengan memori
  • NUMBER – Deskriptor file yang sebenarnya. Ini juga memiliki informasi tentang izin file mana yang dibuka.

TYPE adalah no-brainer. Ini menentukan jenis file. Berikut beberapa contohnya:

  • REG – File biasa
  • DIR – Direktori
  • CHR – File khusus karakter
  • FIFO – Masuk Pertama Keluar Pertama

Percaya padaku. Anda tidak ingin menjalankan perintah lsof tanpa argumen apa pun.

Mengapa saya mengatakan ini? Karena itu akan mulai membanjiri layar Anda dengan ribuan hasil.

Jika saya menjalankan perintah lsof di server Ubuntu dan menghitung jumlah baris dengan perintah wc, inilah hasilnya.

lsof | wc -l
11432

Ya! Betul sekali. Ada lebih dari sebelas ribu file yang dibuka oleh berbagai proses dalam sistem.

Jangan khawatir. Perintah lsof sangat membantu dalam debugging karena Anda dapat melihat proses apa yang membuka file apa dan file mana yang dibuka oleh proses mana.

Jika Anda tidak login sebagai root, output dari perintah lsof akan sangat terbatas. Sebaiknya gunakan sudo jika Anda masuk sebagai pengguna non-root.

1. Daftar semua proses yang telah membuka file

Ini sederhana. Anda hanya perlu menentukan jalur ke file.

lsof <path_to_file>

2. Daftar semua file yang dibuka oleh pengguna

Ini berguna dalam lingkungan multi-pengguna. Anda dapat membuat daftar semua file yang dibuka oleh pengguna tertentu dengan cara berikut:

lsof -u <user_name>

Anda juga dapat menentukan lebih dari satu pengguna seperti ini:

lsof -u user1, user2

atau seperti ini:

lsof -u user1 -u user2

3. Daftar semua file yang dibuka dalam direktori

Jika Anda bertanya-tanya file mana yang telah dibuka di direktori tertentu, Anda dapat menggunakan perintah lsof dengan opsi +D.

lsof +D <path_to_directory>

Pencarian bersifat rekursif. Jadi itu akan mencantumkan semua file yang dibuka di direktori yang disebutkan dan semua sub-direktorinya.

4. Daftar semua file yang dibuka dengan suatu proses

Anda perlu mengetahui id proses (pid) dalam kasus ini. Jika Anda mengetahui id proses, Anda dapat menggunakan opsi -p dari perintah lsof untuk menemukan file yang dibuka olehnya.

lsof -p <pid>

Anda juga dapat menentukan beberapa id proses.

lsof -p pid1, pid2, pid3

5. Daftar semua file yang dibuka dengan perintah

Ini sangat membantu dalam debugging. Misalkan Anda ingin melihat file apa yang digunakan oleh daemon http, Anda hanya perlu menentukan nama perintah (httpd dalam contoh kita).

lsof -c <command>

6. Temukan dibuka oleh pengguna dan perintah atau proses

Anda dapat menggabungkan opsi seperti pengguna dan perintah dan proses menggunakan opsi –a. Anggap saja sebagai operator AND. Ini memberi Anda filter tambahan saat mencoba mempersempit pencarian Anda.

lsof -a -u user_name -c command_name

7. Buat daftar koneksi jaringan dan port dengan perintah lsof

Anda juga dapat menggunakan perintah lsof untuk menemukan port yang terbuka atau untuk menemukan proses mana yang menggunakan port.

Anda dapat mengajukan semua jenis port terbuka dengan opsi -i:

lsof -i

Outputnya mungkin terlihat seperti ini:

lsof -i
 COMMAND     PID            USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
 sshd        920            root    3u  IPv4    20507      0t0  TCP *:ssh (LISTEN)
 sshd        920            root    4u  IPv6    20535      0t0  TCP *:ssh (LISTEN)
 docker-pr  1163            root    4u  IPv6    21687      0t0  TCP *:https (LISTEN)
 docker-pr  1175            root    4u  IPv6    21717      0t0  TCP *:http (LISTEN)
 sshd       7528            root    3u  IPv4 39506588      0t0  TCP testing:ssh->212.91.91.19:58904 (ESTABLISHED)
 systemd-r 10993 systemd-resolve   12u  IPv4 20901990      0t0  UDP localhost:domain 
 systemd-r 10993 systemd-resolve   13u  IPv4 20901991      0t0  TCP localhost:domain (LISTEN)

Anda juga dapat menentukan jenis koneksi jaringan. Misalnya, untuk membuat daftar semua port TCP yang terbuka, Anda dapat menggunakan:

lsof -i tcp

Untuk menemukan proses mana yang menggunakan port tertentu, Anda dapat memberikan nomor port:

lsof -i :<port_number>

Tips Bonus:Menggunakan operator negasi dengan lsof

Anda dapat menggunakan operator negasi untuk mengecualikan pengguna atau proses saat menggunakan perintah lsof.

Misalnya, Anda ingin membuat daftar semua file yang dibuka oleh pengguna selain root, gunakan dengan cara ini:

lsof -u ^root

Perintah lsof menjadi lebih berguna saat Anda menggunakannya dengan perintah grep.

Saya harap Anda belajar sesuatu yang baru dengan artikel ini. Jika Anda memiliki pertanyaan atau saran, silakan tinggalkan komentar di bawah.


Linux
  1. sa Contoh Perintah di Linux

  2. w Contoh Perintah di Linux

  3. Contoh Perintah ac di Linux

  1. 8 Contoh Perintah Linux TR

  2. Contoh Perintah df di Linux

  3. du Contoh Perintah di Linux

  1. 7 Contoh Perintah Linux df

  2. Contoh Perintah rm di Linux

  3. Contoh Perintah ps di Linux