GNU/Linux >> Belajar Linux >  >> Linux

15 Contoh Perintah Linux lsof (Identifikasi Open Files)

lsof adalah singkatan dari List Open Files.

Sangat mudah untuk mengingat perintah lsof jika Anda menganggapnya sebagai “ls + of”, di mana ls adalah singkatan dari list, dan of adalah singkatan dari file yang terbuka.

Ini adalah utilitas baris perintah yang digunakan untuk membuat daftar informasi tentang file yang dibuka oleh berbagai proses. Di unix, semuanya adalah file, (pipa, soket, direktori, perangkat, dll.). Jadi dengan menggunakan lsof, Anda bisa mendapatkan informasi tentang file yang dibuka.

1. Pengantar lsof

Cukup mengetik lsof akan memberikan daftar semua file terbuka milik semua proses aktif.

# lsof

COMMAND  PID       USER   FD      TYPE     DEVICE  SIZE/OFF       NODE NAME
init       1       root  cwd       DIR        8,1      4096          2 /
init       1       root  txt       REG        8,1    124704     917562 /sbin/init
init       1       root    0u      CHR        1,3       0t0       4369 /dev/null
init       1       root    1u      CHR        1,3       0t0       4369 /dev/null
init       1       root    2u      CHR        1,3       0t0       4369 /dev/null
init       1       root    3r     FIFO        0,8       0t0       6323 pipe
...

Secara default, Satu file per baris ditampilkan. Sebagian besar kolom cukup jelas. Kami akan menjelaskan detail tentang beberapa kolom samar (FD dan TYPE).

FD – Mewakili deskriptor file. Beberapa nilai FD adalah,

  • cwd – Direktori Kerja Saat Ini
  • txt – File teks
  • mem ​​– File yang dipetakan memori
  • mmap – Perangkat yang dipetakan dengan memori
  • NUMBER – Mewakili deskriptor file yang sebenarnya. Karakter setelah nomor yaitu '1u', mewakili mode di mana file dibuka. r untuk membaca, w untuk menulis, u untuk membaca dan menulis.

TYPE – Menentukan jenis file. Beberapa nilai TYPE adalah,

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

Untuk daftar lengkap FD &TYPE, lihat man lsof.

2. Daftar proses yang membuka file tertentu

Anda hanya dapat membuat daftar proses yang membuka file tertentu, dengan memberikan nama file sebagai argumen.

# lsof /var/log/syslog

COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
rsyslogd 488 syslog    1w   REG    8,1     1151 268940 /var/log/syslog

3. Daftar file yang dibuka di bawah direktori

Anda dapat membuat daftar proses yang membuka file di bawah direktori tertentu menggunakan opsi '+ D'. +D akan mengulang sub direktori juga. Jika Anda tidak ingin lsof berulang, gunakan opsi ‘+d’.

# lsof +D /var/log/

COMMAND   PID   USER  FD   TYPE DEVICE SIZE/OFF   NODE NAME
rsyslogd  488 syslog   1w   REG    8,1     1151 268940 /var/log/syslog
rsyslogd  488 syslog   2w   REG    8,1     2405 269616 /var/log/auth.log
console-k 144   root   9w   REG    8,1    10871 269369 /var/log/ConsoleKit/history

4. Daftar file yang dibuka berdasarkan nama proses yang dimulai dengan

Anda dapat membuat daftar file yang dibuka dengan nama proses yang dimulai dengan string, menggunakan opsi '-c'. -c diikuti dengan nama proses akan mencantumkan file yang dibuka oleh proses yang dimulai dengan nama proses tersebut. Anda dapat memberikan beberapa tombol -c pada satu baris perintah.

# lsof -c ssh -c init

COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
init         1       root  txt    REG        8,1   124704  917562 /sbin/init
init         1       root  mem    REG        8,1  1434180 1442625 /lib/i386-linux-gnu/libc-2.13.so
init         1       root  mem    REG        8,1    30684 1442694 /lib/i386-linux-gnu/librt-2.13.so
...
ssh-agent 1528 lakshmanan    1u   CHR        1,3      0t0    4369 /dev/null
ssh-agent 1528 lakshmanan    2u   CHR        1,3      0t0    4369 /dev/null
ssh-agent 1528 lakshmanan    3u  unix 0xdf70e240      0t0   10464 /tmp/ssh-sUymKXxw1495/agent.1495

5. Daftar proses menggunakan titik mount

Terkadang ketika kami mencoba untuk meng-umount sebuah direktori, sistem akan mengatakan kesalahan "Perangkat atau Sumber Daya Sibuk". Jadi kita perlu mencari tahu apa saja proses yang menggunakan titik mount dan mematikan proses tersebut untuk umount direktori. Dengan menggunakan lsof kita dapat menemukan proses tersebut.

# lsof /home

Berikut ini juga akan berfungsi.

# lsof +D /home/

6. Daftar file yang dibuka oleh pengguna tertentu

Untuk menemukan daftar file yang dibuka oleh pengguna tertentu, gunakan opsi ‘-u’.

# lsof -u lakshmanan

COMMAND    PID       USER   FD   TYPE     DEVICE SIZE/OFF       NODE NAME
update-no 1892 lakshmanan   20r  FIFO        0,8      0t0      14536 pipe
update-no 1892 lakshmanan   21w  FIFO        0,8      0t0      14536 pipe
bash      1995 lakshmanan  cwd    DIR        8,1     4096     393218 /home/lakshmanan

Terkadang Anda mungkin ingin membuat daftar file yang dibuka oleh semua pengguna, mengharapkan beberapa 1 atau 2. Dalam hal ini Anda dapat menggunakan '^' untuk mengecualikan hanya pengguna tertentu sebagai berikut

# lsof -u ^lakshmanan

COMMAND    PID       USER   FD      TYPE     DEVICE  SIZE/OFF       NODE NAME
rtkit-dae 1380      rtkit    7u     0000        0,9         0       4360 anon_inode
udisks-da 1584       root  cwd       DIR        8,1      4096          2 /

Perintah di atas mencantumkan semua file yang dibuka oleh semua pengguna, harapkan pengguna 'lakshmanan'.

7. Daftar semua file yang terbuka dengan proses tertentu

Anda dapat membuat daftar semua file yang dibuka oleh proses tertentu menggunakan opsi '-p'. Terkadang akan sangat membantu untuk mendapatkan lebih banyak informasi tentang proses tertentu.

# lsof -p 1753

COMMAND  PID       USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
bash    1753 lakshmanan  cwd    DIR    8,1     4096  393571 /home/lakshmanan/test.txt
bash    1753 lakshmanan  rtd    DIR    8,1     4096       2 /
bash    1753 lakshmanan  255u   CHR  136,0      0t0       3 /dev/pts/0
...

8. Matikan semua proses milik pengguna tertentu

Saat Anda ingin mematikan semua proses yang filenya dibuka oleh pengguna tertentu, Anda dapat menggunakan opsi '-t' untuk mencantumkan output hanya id proses dari proses tersebut, dan meneruskannya ke kill sebagai berikut

# kill -9 `lsof -t -u lakshmanan`

Perintah di atas akan mematikan semua proses milik pengguna 'lakshmanan', yang membuka file.

Demikian pula Anda juga dapat menggunakan '-t' dalam banyak cara. Misalnya, untuk membuat daftar id proses dari suatu proses yang dibuka /var/log/syslog dapat dilakukan dengan

# lsof -t /var/log/syslog

489

Berbicara tentang membunuh, tahukah Anda bahwa ada 4 Cara untuk Membunuh Sebuah Proses?

9. Gabungkan lebih banyak opsi daftar menggunakan OR/AND

Secara default ketika Anda menggunakan lebih dari satu opsi daftar di lsof, mereka akan di-ORed. Misalnya,

# lsof -u lakshmanan -c init

COMMAND    PID       USER   FD   TYPE     DEVICE SIZE/OFF       NODE NAME
init         1       root  cwd    DIR        8,1     4096          2 /
init         1       root  txt    REG        8,1   124704     917562 /sbin/init
bash      1995 lakshmanan    2u   CHR      136,2      0t0          5 /dev/pts/2
bash      1995 lakshmanan  255u   CHR      136,2      0t0          5 /dev/pts/2
...

Perintah di atas menggunakan dua opsi daftar, '-u' dan '-c'. Jadi perintah akan mencantumkan proses milik pengguna 'lakshmanan' serta nama proses dimulai dengan 'init'.

Tetapi ketika Anda ingin membuat daftar proses milik pengguna 'lakshmanan' dan nama proses dimulai dengan 'init', Anda dapat menggunakan opsi '-a'.

# lsof -u lakshmanan -c init -a

Perintah di atas tidak akan menampilkan apa-apa, karena tidak ada proses bernama 'init' milik pengguna 'lakshmanan'.

10. Jalankan lsof dalam mode pengulangan

lsof juga mendukung mode Ulangi. Ini pertama-tama akan membuat daftar file berdasarkan parameter yang diberikan, dan menunda untuk detik yang ditentukan dan sekali lagi mencantumkan file berdasarkan parameter yang diberikan. Itu bisa diinterupsi oleh sinyal.

Mode pengulangan dapat diaktifkan dengan menggunakan '-r' atau '+r'. Jika '+r' digunakan maka, mode pengulangan akan berakhir ketika tidak ada file yang terbuka ditemukan. '-r' akan terus daftar, tunda, daftar sampai interupsi diberikan terlepas dari file dibuka atau tidak.

Setiap keluaran siklus akan dipisahkan dengan menggunakan ‘========’. Anda juga menentukan waktu tunda sebagai '-r' | ‘+r’.

# lsof -u lakshmanan -c init -a -r5

=======
=======
COMMAND   PID       USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
inita.sh 2971 lakshmanan  cwd    DIR    8,1     4096  393218 /home/lakshmanan
inita.sh 2971 lakshmanan  rtd    DIR    8,1     4096       2 /
inita.sh 2971 lakshmanan  txt    REG    8,1    83848  524315 /bin/dash
inita.sh 2971 lakshmanan  mem    REG    8,1  1434180 1442625 /lib/i386-linux-gnu/libc-2.13.so
inita.sh 2971 lakshmanan  mem    REG    8,1   117960 1442612 /lib/i386-linux-gnu/ld-2.13.so
inita.sh 2971 lakshmanan    0u   CHR  136,4      0t0       7 /dev/pts/4
inita.sh 2971 lakshmanan    1u   CHR  136,4      0t0       7 /dev/pts/4
inita.sh 2971 lakshmanan    2u   CHR  136,4      0t0       7 /dev/pts/4
inita.sh 2971 lakshmanan   10r   REG    8,1       20  393578 /home/lakshmanan/inita.sh
=======

Pada output di atas, selama 5 detik pertama, tidak ada output. Setelah itu skrip bernama "inita.sh" dimulai, dan menampilkan outputnya.

Menemukan Koneksi Jaringan

Koneksi jaringan juga file. Jadi kami dapat menemukan informasi tentang mereka dengan menggunakan lsof.

11. Daftar semua koneksi jaringan

Anda dapat membuat daftar semua koneksi jaringan yang dibuka dengan menggunakan opsi '-i'.

# lsof -i

COMMAND    PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
avahi-dae  515 avahi   13u  IPv4   6848      0t0  UDP *:mdns
avahi-dae  515 avahi   16u  IPv6   6851      0t0  UDP *:52060
cupsd     1075  root    5u  IPv6  22512      0t0  TCP ip6-localhost:ipp (LISTEN)

Anda juga dapat menggunakan '-i4' atau '-i6' untuk mendaftar masing-masing hanya 'IPV4' atau 'IPV6'.

12. Daftar semua file jaringan yang digunakan oleh proses tertentu

Anda dapat membuat daftar semua file jaringan yang sedang digunakan oleh suatu proses sebagai berikut

# lsof -i -a -p 234

Anda juga dapat menggunakan yang berikut

# lsof -i -a -c ssh

Perintah di atas akan mencantumkan file jaringan yang dibuka oleh proses yang dimulai dengan ssh.

13. Daftar proses yang mendengarkan pada port tertentu

Anda dapat membuat daftar proses yang mendengarkan pada port tertentu dengan menggunakan '-i' dengan ':' sebagai berikut

# lsof -i :25

COMMAND  PID        USER   FD   TYPE DEVICE SIZE NODE NAME
exim4   2541 Debian-exim    3u  IPv4   8677       TCP localhost:smtp (LISTEN)

14. Daftar semua koneksi TCP atau UDP

Anda dapat membuat daftar semua koneksi TCP atau UDP dengan menentukan protokol menggunakan '-i'.

# lsof -i tcp; lsof -i udp;

15. Daftar semua file Sistem File Jaringan ( NFS )

Anda dapat membuat daftar semua file NFS dengan menggunakan opsi '-N'. Perintah lsof berikut akan menampilkan semua file NFS yang digunakan oleh pengguna 'lakshmanan'.

# lsof -N -u lakshmanan -a

Linux
  1. 7 Contoh Perintah lsof di Linux

  2. Contoh Perintah rm di Linux

  3. Contoh Perintah ps di Linux

  1. Contoh Praktis Perintah rsync di Linux

  2. Perintah Linux ls - Daftar File

  3. 8 Contoh Perintah Linux TR

  1. 7 Contoh Perintah Linux df

  2. sa Contoh Perintah di Linux

  3. w Contoh Perintah di Linux