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

Cara Memasang Panel Kontrol Hosting Mudah di Ubuntu 16.04

Cara Memasang Panel Kontrol Hosting Mudah di Ubuntu 16.04

Pelajari langkah-langkah untuk memasang Panel Kontrol Hosting Mudah (EHCP) di Ubuntu 16.04 dengan panduan ini.

Cara Memasang Graylog Server pada CentOS 7

Cara Memasang Graylog Server pada CentOS 7

Menggunakan Sistem yang Berbeda? Graylog server adalah perangkat lunak manajemen log sumber terbuka siap pakai perusahaan. Ia mengumpulkan log dari berbagai sumber dan menganalisis

Cara Memasang Anchor CMS pada Fedora 26 LAMP VPS

Cara Memasang Anchor CMS pada Fedora 26 LAMP VPS

Menggunakan Sistem yang Berbeda? Anchor CMS adalah Content Engine System (CMS) Blog Engine yang super-sederhana dan sangat ringan, gratis, dan terbuka

Siapkan Berbagi NFS di Debian

Siapkan Berbagi NFS di Debian

NFS adalah sistem file berbasis jaringan yang memungkinkan komputer untuk mengakses file di seluruh jaringan komputer. Panduan ini menjelaskan bagaimana Anda dapat mengekspos folder melalui NF

Cara Memasang GitBucket di Ubuntu 16.04

Cara Memasang GitBucket di Ubuntu 16.04

Panduan ini mencakup instalasi dasar dan pengaturan GitBucket untuk instance Vultr yang menjalankan Ubuntu 16.04, dan mengasumsikan bahwa Anda menjalankan perintah sebagai

Cara Memasang Directus 6.4 CMS pada Fedora 26 LAMP VPS

Cara Memasang Directus 6.4 CMS pada Fedora 26 LAMP VPS

Menggunakan Sistem yang Berbeda? Directus 6.4 CMS adalah Headless Content Management System (CMS) yang kuat dan fleksibel, gratis dan open source yang menyediakan pengembang

Cara Memasang Mattermost 5.2 di Ubuntu 16.04

Cara Memasang Mattermost 5.2 di Ubuntu 16.04

Menggunakan Sistem yang Berbeda? Mattermost adalah sumber terbuka, alternatif yang di-host-sendiri ke layanan pesan Slack SAAS. Dengan kata lain, dengan Mattermost, Anda ca

Menyiapkan Server TeamTalk di Linux

Menyiapkan Server TeamTalk di Linux

TeamTalk adalah sistem konferensi yang memungkinkan pengguna untuk memiliki percakapan audio / video berkualitas tinggi, obrolan teks, transfer file, dan berbagi layar. Itu saya

Menggunakan kunci SSH Anda untuk masuk ke pengguna non-root

Menggunakan kunci SSH Anda untuk masuk ke pengguna non-root

Vultr menyediakan fitur yang memungkinkan Anda untuk melakukan pra-instal kunci SSH setelah membuat instance baru. Ini memungkinkan Anda untuk mengakses pengguna root server, namun, th

Cara Menginstal PostgreSQL 11.1 Di Arch Linux

Cara Menginstal PostgreSQL 11.1 Di Arch Linux

Prasyarat Server Vultr berjalan terbaru Arch Linux (lihat artikel ini.) Akses Sudo. Perintah yang diperlukan untuk dijalankan karena root diawali oleh #, dan satu

Cara Memasang Manajer File Terminal Ranger di Linux

Cara Memasang Manajer File Terminal Ranger di Linux

Ranger adalah manajer file berbasis baris perintah dengan binding kunci VI. Ini memberikan antarmuka kutukan minimalis dan bagus dengan tampilan pada hierarki direktori

Cara Memasang Redmine di Ubuntu 16.04

Cara Memasang Redmine di Ubuntu 16.04

Menggunakan Sistem yang Berbeda? Redmine adalah alat manajemen proyek berbasis web gratis dan open source. Itu ditulis dalam Ruby on Rails dan mendukung banyak database

Cara Membangun Brotli Dari Sumber di Ubuntu 18.04 LTS

Cara Membangun Brotli Dari Sumber di Ubuntu 18.04 LTS

Menggunakan Sistem yang Berbeda? Brotli adalah metode kompresi baru dengan rasio kompresi yang lebih baik daripada GZIP. Kode sumbernya dihosting secara publik di Githu ini

Atur Akun Pengguna khusus SFTP di CentOS 7

Atur Akun Pengguna khusus SFTP di CentOS 7

Pada kesempatan tertentu, Administrator Sistem mungkin perlu membuat akun pengguna dan membatasi akses mereka untuk hanya mengelola file mereka sendiri melalui sFTP, tetapi tidak

Menggunakan Tampilan MySQL pada Debian 7

Menggunakan Tampilan MySQL pada Debian 7

Pendahuluan MySQL memiliki fitur hebat yang dikenal sebagai tampilan. Tampilan adalah kueri yang disimpan. Pikirkan mereka sebagai alias untuk permintaan yang panjang. Dalam panduan ini,

Cara Memasang Nginx 1.14 Di Arch Linux

Cara Memasang Nginx 1.14 Di Arch Linux

Prasyarat Server Vultr berjalan terbaru Arch Linux (lihat artikel ini.) Akses Sudo. Perintah yang harus dijalankan sebagai root diawali oleh #. Th

Nonaktifkan atau Batasi Login Root melalui SSH di Linux

Nonaktifkan atau Batasi Login Root melalui SSH di Linux

Mengizinkan login root melalui SSH umumnya dianggap sebagai praktik keamanan yang buruk di seluruh industri teknologi. Sebagai gantinya, Anda dapat melakukan administrativ sensitif

Cara Memasang Seafile Server di Ubuntu 16.10

Cara Memasang Seafile Server di Ubuntu 16.10

Menggunakan Sistem yang Berbeda? Seafile (versi komunitas) adalah solusi sinkronisasi dan berbagi file sumber gratis dan terbuka yang mirip dengan ownCloud. Sepanjang kecerdasan

Cara Memasang Thelia 2.3 pada Debian 9

Cara Memasang Thelia 2.3 pada Debian 9

Menggunakan Sistem yang Berbeda? Thelia adalah alat sumber terbuka untuk membuat situs web e-bisnis dan mengelola konten online yang ditulis dalam PHP. Kode sumber thelia i

Cara Memasang MongoDB 4.0 di Arch Linux

Cara Memasang MongoDB 4.0 di Arch Linux

Prasyarat Server Vultr berjalan terbaru Arch Linux (lihat artikel ini) Akses Sudo: Perintah yang diperlukan untuk dijalankan karena root diawali oleh #, dan satu

Cara Memasang Panel Kontrol Hosting Mudah di Ubuntu 16.04

Cara Memasang Panel Kontrol Hosting Mudah di Ubuntu 16.04

Pelajari langkah-langkah untuk memasang Panel Kontrol Hosting Mudah (EHCP) di Ubuntu 16.04 dengan panduan ini.

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.