lsof panduan bertahan hidup [ditutup]

104

lsof adalah utilitas baris perintah yang luar biasa kuat untuk sistem unix. Ini mencantumkan file yang terbuka, menampilkan informasi tentang mereka. Dan karena hampir semuanya adalah file pada sistem unix, lsof dapat memberi sysadmin banyak sekali data diagnostik yang berguna.

Apa sajakah cara yang paling umum dan berguna untuk menggunakan lsof, dan sakelar baris perintah mana yang digunakan untuk itu?

Hans Sjunnesson
sumber

Jawaban:

119

Untuk menampilkan semua jaringan yang terkait dengan yang diberikan port:

lsof -iTCP -i :port
lsof -i :22

Untuk menunjukkan koneksi ke host tertentu, gunakan @host

lsof [email protected]

Tampilkan koneksi berdasarkan host dan port menggunakan @host:port lsof [email protected]: 22

grepping untuk LISTENmenunjukkan port apa yang sedang menunggu koneksi di sistem Anda:

lsof -i| grep LISTEN

Tunjukkan apa yang telah dibuka pengguna tertentu -u:

lsof -u daniel

Lihat file dan koneksi jaringan apa yang digunakan oleh suatu perintah -c

lsof -c syslog-ng

The -pberalih memungkinkan Anda melihat apa proses ID yang diberikan telah terbuka, yang baik untuk belajar lebih banyak tentang proses yang tidak diketahui:

lsof -p 10075

The -tpilihan kembali hanyaPID

lsof -t -c Mail

Menggunakan opsi -tdan -cbersama-sama Anda dapat HUPmemproses

kill -HUP $(lsof -t -c sshd)

Anda juga dapat menggunakan -twith -uuntuk mematikan semua yang telah dibuka pengguna

kill -9 $(lsof -t -u daniel)
Kevin
sumber
Sumber: danielmiessler.com/study/lsof
Uphill_ What '1
Salah satu cara yang baik adalah dengan menggunakan permata cheat, jika Anda menggunakan Ruby. CLI yang digerakkan oleh komunitas dan mudah digunakan untuk mencontek banyak utilitas (tidak tergantung bahasa). Memberikan try .
Kedar Mhaswade
25
lsof -i :port 

akan memberi tahu Anda program apa yang sedang mendengarkan pada port tertentu.

dvorak
sumber
1
Ini tidak terbatas pada "mendengarkan", jadi jika Anda menentukan lsof -i :8080dan Anda memiliki banyak proses yang menghubungkan ke proxy pada port 8080, Anda juga akan mendapatkannya.
Matt Byrne
14
lsof +D /some/directory

Akan menampilkan secara rekursif semua file yang dibuka dalam sebuah direktori. + d hanya untuk level teratas.

Ini berguna ketika Anda memiliki% tunggu tinggi untuk IO, berkorelasi untuk digunakan pada FS tertentu dan ingin melihat proses mana yang mengunyah io Anda.

tidur siang
sumber
13

lsof -iakan memberikan daftar soket jaringan terbuka. The -npilihan akan mencegah DNS lookup, yang berguna ketika koneksi jaringan anda lambat atau tidak dapat diandalkan.

John Millikin
sumber
5
lsof -ihanya akan menampilkan soket yang dapat Anda akses di namespace Anda (dan yang dianggap sebagai soket "internet" melalui introspeksi, bukan sembarang jenis soket jaringan). Jika tidak, pegangan jenis 'kaus kaki' tidak akan muncul dalam daftar.
Nick Bastin
13

Lihat file apa yang dibuka oleh aplikasi atau daemon yang berjalan:

lsof -p pid

Dimana pid adalah ID proses dari aplikasi atau daemon.

Chris
sumber
10
lsof +f -- /mountpoint

membuat daftar proses menggunakan file di mount yang dipasang di / mountpoint. Sangat berguna untuk menemukan proses mana yang menggunakan stik USB atau CD / DVD yang terpasang.

mas
sumber