Di Linux, saya dapat menggunakan netstat -pntl | grep $PORT
atau fuser -n tcp $PORT
untuk mengetahui proses (PID) mana yang mendengarkan pada port TCP yang ditentukan. Bagaimana saya mendapatkan informasi yang sama di Mac OS X?
1382
netstat -p tcp | grep $PORT
tidak menampilkan PID karena netstat di Mac OS X tidak dapat menampilkan PID.netstat -anv
menampilkan port pada Mac OS X (sumber: solusi di bawah ini oleh @SeanHamiliton)Jawaban:
Di macOS High Sierra dan yang lebih baru, gunakan perintah ini:
atau hanya melihat IPv4 saja:
Pada versi yang lebih lama, gunakan salah satu dari formulir berikut:
Pengganti
$PORT
dengan nomor port atau daftar nomor port yang dipisahkan koma.Prepend
sudo
(diikuti oleh spasi) jika Anda memerlukan informasi tentang port di bawah # 1024.The
-n
bendera untuk menampilkan alamat IP bukan nama host. Ini membuat perintah mengeksekusi lebih cepat, karena pencarian DNS untuk mendapatkan nama host bisa lambat (beberapa detik atau satu menit untuk banyak host).The
-P
bendera untuk menampilkan nomor baku pelabuhan bukan nama diselesaikan sepertihttp
,ftp
atau nama layanan yang lebih esoteris sepertidpserve
,socalia
.Lihat komentar untuk opsi lainnya.
Untuk kelengkapan, karena sering digunakan bersama:
Untuk membunuh PID:
sumber
sudo
untuk melihat proses yang tidak Anda miliki.sudo lsof -i TCP:$PORT | grep LISTEN
grep
:sudo lsof -iTCP:$PORT -sTCP:LISTEN
Sejak Snow Leopard (10.6), hingga Mojave (10.14) dan Catalina (10.15) , setiap versi macOS mendukung ini:
sudo lsof -iTCP -sTCP:LISTEN -n -P
Secara pribadi saya telah berakhir dengan fungsi sederhana ini di
~/.bash_profile
:Kemudian
listening
perintah memberi Anda daftar proses mendengarkan pada beberapa port danlistening smth
memahami ini untuk beberapa pola.Setelah ini, cukup mudah untuk bertanya tentang proses tertentu, misalnya
listening dropbox
, atau port, misalnyalistening 22
.lsof
perintah memiliki beberapa opsi khusus untuk bertanya tentang port, protokol, proses dll. tetapi secara pribadi saya telah menemukan fungsi di atas jauh lebih berguna, karena saya tidak perlu mengingat semua opsi tingkat rendah ini.lsof
alat yang cukup kuat, tapi sayangnya tidak begitu nyaman untuk digunakan.sumber
-pntl
, yang akan mencantumkan semua layanan. Jawaban yang diterima meminta satu atau lebih nomor port yang akan ditentukan, yang tidak jauh sama.Anda juga bisa menggunakan:
Ini bekerja di Mavericks.
sumber
-i
pilihan membuatnya secara signifikan lebih cepat. 0,02 detik vs 2 detik. Dalam aplikasi saya ini membuat perbedaan.Perbarui Januari 2016
Benar-benar terkejut tidak ada yang menyarankan:
untuk mendapatkan informasi dasar yang dibutuhkan. Misalnya, memeriksa port 1337:
Variasi lain, tergantung pada keadaan:
Anda dapat dengan mudah membangun ini untuk mengekstrak PID itu sendiri. Sebagai contoh:
yang juga setara (dalam hasil) dengan perintah ini:
Ilustrasi cepat:
Untuk kelengkapan, karena sering digunakan bersama:
Untuk membunuh PID:
atau sebagai satu liner:
sumber
lsof -t -i :1338
.-t
akan mengembalikan id proses, jadi Anda tidak perlu awk / kepala.kill -9 $(lsof -t -i :5000)
pada el capitanwhatsonport() { ps -ef | grep `lsof -t -i :$1` }
jadi:⇒ whatsonport 3000 --> 501 14866 14865 0 6:07AM ttys006 0:01.73 node .
lsof -i :PORT_NUMBER
melakukan pekerjaan untuk saya.Ini berfungsi di Mavericks (OSX 10.9.2).
sumber
Untuk port LISTEN, ESTABLISHED, dan CLOSED
Untuk port DENGAR saja
Untuk port LISTEN tertentu, mis: port 80
Atau jika Anda hanya ingin ringkasan ringkas [tidak ada layanan / aplikasi yang dijelaskan], buka NETSTAT. Sisi baiknya di sini adalah, tidak perlu sudo
Menjelaskan item yang digunakan:
-n menekan nama host
-i untuk protokol IPv4 dan IPv6
-Menghapus nama port
-a [over netstat] untuk semua soket
-n [over netstat] tidak menyelesaikan nama, tampilkan alamat jaringan sebagai angka
sumber
pada OS X Anda dapat menggunakan opsi -v untuk netstat untuk memberikan pid terkait.
Tipe:
output akan terlihat seperti ini:
PID adalah angka sebelum kolom terakhir, 3105 untuk kasus ini
sumber
grep LISTEN
untuk menunjukkan pendengar saja.lsof
tidak dapat menemukan porta. tetapinetstat
menunjukkan itu terbuka.-v
adalah saus rahasia yang kurang.Di macOS, inilah cara mudah untuk mendapatkan ID proses yang mendengarkan pada port tertentu dengan netstat . Contoh ini mencari proses penyajian konten di port 80:
temukan server berjalan pada port 80
output sampel
Yang ke-2 dari kolom terakhir adalah PID. Di atas, ini 715 .
pilihan
-a
- tampilkan semua port, termasuk yang digunakan oleh server-n
- tampilkan angka, jangan cari nama. Ini membuat perintah jauh lebih cepat-v
- verbose output, untuk mendapatkan ID proses-w
- kata pencarian. Kalau tidak, perintah akan mengembalikan info untuk port 8000 dan 8001, bukan hanya "80"LISTEN
- berikan info hanya untuk port dalam mode LISTEN, yaitu serversumber
Pada versi macOS terbaru Anda dapat menggunakan perintah ini:
Jika Anda merasa sulit untuk diingat maka mungkin Anda harus membuat
bash
fungsi dan mengekspornya dengan nama yang lebih ramah seperti itudan kemudian tambahkan baris berikut ke file itu dan simpan.
Sekarang Anda dapat mengetikkan
listening_on 80
Terminal Anda dan melihat proses mana yang mendengarkan pada port80
.sumber
Di Snow Leopard (OS X 10.6.8), menjalankan hasil 'man lsof':
(entri manual sebenarnya adalah 'lsof -i 4 -a -p 1234')
Jawaban sebelumnya tidak berfungsi pada Snow Leopard, tetapi saya mencoba menggunakan 'netstat -nlp' sampai saya melihat penggunaan 'lsof' dalam jawaban oleh pts.
sumber
Saya seorang pria Linux. Di Linux sangat mudah dengan
netstat -ltpn
atau kombinasi huruf-huruf itu. Namun di Mac OS Xnetstat -an | grep LISTEN
adalah yang paling manusiawi. Yang lain sangat jelek dan sangat sulit diingat ketika troubleshooting.sumber
Ini menampilkan siapa yang melakukan apa. Hapus -n untuk melihat nama host (sedikit lebih lambat).
sumber
If no address is specified, this option [-i] selects the listing of all Internet and x.25 (HP-UX) network files.
-sTCP:LISTEN
kelsof
Ini melakukan apa yang saya butuhkan.
sumber
Saya membuat skrip kecil untuk melihat tidak hanya siapa yang mendengarkan di mana tetapi juga untuk menampilkan koneksi yang mapan dan ke negara mana. Bekerja pada OSX Siera
Ini mungkin berguna untuk memeriksa apakah Anda terhubung ke korea utara! ;-)
sumber
Ini adalah cara yang baik di macOS High Sierra:
sumber
Terinspirasi oleh pengguna Brent Self:
lsof -i 4 -a | grep LISTEN
sumber
Untuk macOS saya menggunakan dua perintah bersama untuk menunjukkan informasi tentang proses mendengarkan pada mesin dan proses menghubungkan ke server jauh. Dengan kata lain, untuk memeriksa port mendengarkan dan koneksi saat ini (TCP) pada host, Anda dapat menggunakan dua perintah berikut secara bersamaan
Kupikir aku akan menambahkan masukanku, semoga itu bisa membantu seseorang.
sumber