Pengantar Lsof

Di Linux, banyak objek dianggap file, terlepas dari apakah objek itu sebenarnya file, perangkat, direktori, atau soket. Mendaftarkan file mudah, ada shell bawaan lsuntuk itu. Tetapi bagaimana jika pengguna ingin melihat file mana yang saat ini dibuka oleh proses server web? Atau jika pengguna itu ingin mengetahui file mana yang dibuka di direktori tertentu? Di situlah lsofikut bermain. Bayangkan lsofsebagai lsdengan penambahan "file terbuka".

Harap dicatat bahwa walaupun BSD memiliki utilitas berbeda untuk pekerjaan ini fstat, beberapa rasa Unix lainnya (Solaris, misalnya) juga memiliki lsof. Opsi dan flag berbeda pada platform lain, serta tampilan output, tetapi umumnya pengetahuan dalam artikel ini juga berlaku untuk mereka.

Pertama, mari kita lihat format lsofoutput dan bagaimana itu dibaca. Output biasa lsoftanpa parameter apa pun akan menyerupai berikut ini. Ini telah dipangkas agar mudah dibaca.

COMMAND    PID  TID       USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
init         1            root  cwd       DIR              254,1      4096          2 /
init         1            root  rtd       DIR              254,1      4096          2 /
init         1            root  txt       REG              254,1     36992    7077928 /sbin/init
init         1            root  mem       REG              254,1     14768    7340043 /lib/x86_64-linux-gnu/libdl-2.13.so
init         1            root  mem       REG              254,1   1603600    7340040 /lib/x86_64-linux-gnu/libc-2.13.so
init         1            root  mem       REG              254,1    126232    7340078 /lib/x86_64-linux-gnu/libselinux.so.1
init         1            root  mem       REG              254,1    261184    7340083 /lib/x86_64-linux-gnu/libsepol.so.1
init         1            root  mem       REG              254,1    136936    7340037 /lib/x86_64-linux-gnu/ld-2.13.so
init         1            root   10u     FIFO               0,14       0t0       4781 /run/initctl

Kolom ini berarti yang berikut:

  • PERINTAH - Proses yang dimiliki file terbuka, dalam contoh ini semuanya terkait init.
  • PID - Nomor identifikasi proses dari proses tersebut.
  • USER - Pengguna tempat proses berjalan. Sebab init, hampir selalu root.
  • FD - File deskriptor file, yang paling umum adalah:
    • cwd- Direktori kerja saat ini (Anda mungkin melihat kesamaan dengan pwdperintah yang mencetak direktori kerja saat ini).
    • rtd - Direktori root dari suatu proses.
    • txt- A text file, ini bisa berarti file konfigurasi yang terkait dengan proses atau "kode sumber" yang terkait dengan (atau milik) proses.
    • mem - Apa yang disebut "file yang dipetakan memori", itu berarti segmen memori virtual (baca: RAM) yang telah ditetapkan ke file.
    • Angka - angka tersebut mewakili deskriptor file aktual, karakter setelah nomor adalah mode di mana file dibuka:
    • r - Baca.
    • w - Menulis.
    • u - Baca dan tulis.
  • TYPE - Menentukan jenis file yang sebenarnya, yang paling umum adalah:
    • REG - File biasa.
    • DIR - Direktori.
    • FIFO - Pertama masuk pertama keluar.
  • PERANGKAT - Jumlah utama dan kecil perangkat yang menyimpan file.
  • SIZE - Ukuran file, dalam byte.
  • NODE - Nomor inode file.
  • NAME - Nama file.

Ini mungkin sedikit berlebihan untuk saat ini, tetapi jika Anda bekerja dengan lsofbeberapa kali, itu akan dengan cepat meresap ke dalam otak Anda.

Seperti disebutkan di atas, output dari lsoftelah dipersingkat di sini. Tanpa argumen atau filter, lsofmenghasilkan ratusan garis output yang hanya akan membuat Anda bingung.

Ada dua pendekatan dasar untuk mengatasi masalah itu:

  • Gunakan satu atau lebih lsofopsi baris perintah untuk mempersempit hasilnya.
  • Pipa keluaran melalui, misalnya grep,.

Meskipun opsi yang terakhir mungkin terdengar lebih nyaman karena Anda tidak perlu menghafal lsofopsi baris perintah, umumnya opsi ini tidak fleksibel dan efisien, jadi kami akan tetap menggunakan yang pertama.

Mari kita bayangkan bahwa Anda ingin membuka file dengan editor teks favorit Anda, dan bahwa editor teks memberi tahu Anda bahwa itu hanya dapat dibuka dalam mode read-only karena program lain sudah mengaksesnya. lsofakan membantu Anda mengetahui siapa pelakunya:

lsof /path/to/your/file

Ini akan menghasilkan output yang mirip dengan ini:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
vim 2679 root    5w   REG  254,1   121525 6035622 /root/lsof.txt

Rupanya, Anda lupa untuk menutup dan sesi yang lebih lama! Masalah yang sangat mirip terjadi ketika Anda mencoba meng-unmount share NFS dan umountmengatakan itu tidak bisa karena ada sesuatu yang masih mengakses folder yang di-mount. Sekali lagi, lsofdapat membantu Anda mengidentifikasi pelakunya:

lsof +D /path/to/your/directory/

Perhatikan garis miring, itu penting. Kalau tidak lsofakan menganggap Anda berarti file biasa. Jangan bingung dengan +di depan bendera - lsofmemiliki begitu banyak opsi baris perintah yang diperlukan +selain yang lebih umum -. Outputnya akan terlihat seperti ini:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
mocp    5637  music    4r   REG   0,19 10147719 102367344 /home/Music/RMS_GNU_SONG.ogg

Itu berarti bahwa proses mocp, dengan PID 5637, milik pengguna musictelah membuka file bernama RMS_GNU_SONG.ogg. Namun, bahkan setelah menutup proses itu, masih ada masalah - volume NFS tidak dapat di-unmount.

lsofmemiliki -cbendera yang menampilkan file yang membuka nama proses sewenang-wenang.

lsof -c mocp

Itu akan menghasilkan output yang terlihat seperti ini:

mocp    9383  music    4r   REG   0,19 10147719 102367344 /home/Music/ANOTHER_RMS_GNU_SONG.ogg

Dalam contoh ini, ada contoh lain mocpmenjalankan, mencegah Anda melepas pemasangan bagian. Setelah mematikan proses itu, Anda ingin memastikan bahwa pengguna musictidak memiliki file yang berpotensi bermasalah terbuka. lsofmemiliki -ubendera untuk menampilkan file yang dibuka oleh pengguna tertentu. Ingat, file tidak selalu hanya file biasa di hard disk Anda!

lsof -u music

Anda juga dapat melewati beberapa pengguna, dipisahkan dengan koma:

lsof -u music,moremusic

Sebuah penting catatan pada perilaku default lsof: hasilnya OR berbasis, yang berarti bahwa Anda akan melihat hasil file yang dibuka oleh proses yang dimiliki baik oleh pengguna music, atau pengguna moremusic. Jika Anda ingin melihat hasil proses pencocokan yang dimiliki oleh kedua pengguna, maka Anda harus melewati tanda -a:

lsof -au music, moremusic

Karena kedua pengguna berada di grup musicusers, maka Anda juga dapat membuat daftar file berdasarkan grup:

lsof -g musicusers

Anda juga dapat menggabungkan flag baris perintah:

lsof -u music,moremusic -c mocp

or

lsof -u ^music +D /home/Music

Di baris terakhir, kami menambahkan bendera khusus lain - ^, yang merupakan singkatan dari NOT logis . Jika output kosong setelah menjalankan perintah itu, maka unmount kemungkinan besar akan berhasil.

Dalam contoh-contoh sebelumnya, kami kebanyakan melihat file biasa. Bagaimana dengan soket dan koneksi jaringan?

Untuk daftar semua koneksi jaringan saat ini lsofmemiliki -ibendera:

lsof -i

Outputnya terlihat mirip dengan apa yang telah kita lihat sejauh ini ...

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
owncloud  3509  myuser   25u  IPv4  44946      0t0  TCP strix.local:34217->myserver.vultr.com:https (ESTABLISHED)
firefox   3612  myuser   82u  IPv4  49663      0t0  TCP strix.local:43897->we-in-f100.1e100.net:https (ESTABLISHED)
ssh       3784  myuser    3u  IPv4  10437      0t0  TCP strix.local:51416->someserver.in:ssh (ESTABLISHED)
wget      4140  myuser    3w  IPv4  45586      0t0  TCP strix.local:54460->media.ccc.de:http (CLOSE_WAIT)

... kecuali satu perbedaan: alih-alih nama file atau direktori, kolom NAMEsekarang menunjukkan informasi koneksi. Setiap koneksi terdiri dari bagian-bagian berikut:

  • Protokol.
  • Nama host lokal.
  • Port sumber koneksi.
  • Nama DNS tujuan.
  • Pelabuhan tujuan.
  • Status koneksi.

Seperti banyak alat lainnya, Anda dapat memilih untuk tidak keluar dari penyelesaian nama dan port DNS ( -ndan -P, masing-masing). Bendera -imengambil parameter tambahan. Anda dapat menentukan apakah akan ditampilkan atau tidak tcp, udpatau icmpkoneksi atau port tertentu:

lsof -i :25
or
lsof -i :smtp

Sekali lagi, parameter dapat digabungkan. Contoh berikut ...

lsof -i tcp:80

... hanya akan menunjukkan kepada Anda koneksi TCP menggunakan port 80. Anda juga dapat menggabungkannya dengan opsi yang sudah Anda ketahui dari file "klasik":

lsof -a -u httpd -i tcp

Ini akan menunjukkan kepada Anda semua koneksi TCP yang dibuka oleh pengguna httpd. Perhatikan -aflag, yang mengubah perilaku default lsof(seperti yang disebutkan sebelumnya). Seperti kebanyakan alat baris perintah, Anda bisa sangat dalam. Berikut ini hanya akan menunjukkan kepada Anda koneksi TCP yang kondisinya "ESTABLISHED":

lsof -i -s TCP:ESTABLISHED

Pada titik ini, Anda harus memiliki pemahaman dasar tentang cara lsofkerjanya, bersama dengan beberapa kasus penggunaan umum. Untuk bacaan lebih lanjut, lihat halaman manual lsofpada sistem Anda.



Leave a Comment

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

6 Hal yang Sangat Menggila dari Nintendo Switch

6 Hal yang Sangat Menggila dari Nintendo Switch

Banyak dari Anda tahu Switch keluar pada Maret 2017 dan fitur-fitur barunya. Bagi yang belum tahu, kami sudah menyiapkan daftar fitur yang membuat 'Switch' menjadi 'gadget yang wajib dimiliki'.

Janji Teknologi Yang Masih Belum Ditepati

Janji Teknologi Yang Masih Belum Ditepati

Apakah Anda menunggu raksasa teknologi untuk memenuhi janji mereka? periksa apa yang belum terkirim.

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Baca blog untuk mengetahui berbagai lapisan dalam Arsitektur Big Data dan fungsinya dengan cara yang paling sederhana.

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Baca ini untuk mengetahui bagaimana Kecerdasan Buatan menjadi populer di antara perusahaan skala kecil dan bagaimana hal itu meningkatkan kemungkinan untuk membuat mereka tumbuh dan memberi keunggulan pada pesaing mereka.

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA telah berkembang cukup sulit bagi pengguna untuk dipecahkan dalam beberapa tahun terakhir. Apakah itu akan tetap efektif dalam deteksi spam dan bot di masa mendatang?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Saat Sains Berkembang dengan kecepatan tinggi, mengambil alih banyak upaya kita, risiko menundukkan diri kita pada Singularitas yang tidak dapat dijelaskan juga meningkat. Baca, apa arti singularitas bagi kita.

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Apa itu telemedicine, perawatan kesehatan jarak jauh dan dampaknya terhadap generasi mendatang? Apakah itu tempat yang bagus atau tidak dalam situasi pandemi? Baca blog untuk menemukan tampilan!

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Anda mungkin pernah mendengar bahwa peretas menghasilkan banyak uang, tetapi pernahkah Anda bertanya-tanya bagaimana cara mereka mendapatkan uang sebanyak itu? mari berdiskusi.

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Baru-baru ini Apple merilis macOS Catalina 10.15.4 pembaruan suplemen untuk memperbaiki masalah tetapi tampaknya pembaruan menyebabkan lebih banyak masalah yang mengarah ke bricking mesin mac. Baca artikel ini untuk mempelajari lebih lanjut