Pertanyaan Temukan (dan bunuh) proses penguncian port 3000 pada Mac


Bagaimana saya menemukan proses yang mendengarkan / menggunakan port tcp saya? Saya di mac os x.

Kadang-kadang, setelah crash atau beberapa bug, aplikasi rel saya mengunci port 3000. Saya tidak dapat menemukannya menggunakan ps-ef ... Bagaimana saya menemukan hal bodoh dan membunuhnya, dengan brutal ...?

Saat melakukan

rails server

saya mendapat

Alamat sudah digunakan - bind (2) (Errno :: EADDRINUSE)

Pembaruan 2014:

Untuk melengkapi beberapa jawaban di bawah ini: Setelah mengeksekusi perintah kill, menghapus file pid mungkin diperlukan rm ~/mypath/myrailsapp/tmp/pids/server.pid


1054
2017-10-04 12:19


asal


Jawaban:


  1. Anda dapat mencoba netstat

    netstat -vanp tcp | grep 3000
    
  2. Untuk macOS El Capitan dan yang lebih baru (atau jika netstat Anda tidak mendukung -p), gunakan lsof

    sudo lsof -i tcp:3000 
    
  3. Untuk Centos 7 menggunakan

    netstat -vanp --tcp | grep 3000
    

1754
2017-10-04 12:48



Menemukan:

[sudo] lsof -i :3000

Membunuh:

kill -9 <PID>

1163
2017-09-09 20:58



Tidak ada yang berhasil bagi saya. Orang lain dengan pengalaman saya dapat mencoba yang berikut ini (bekerja untuk saya):

Menjalankan:

lsof -i :3000 (where 3000 is your current port in use)

kemudian periksa status PID yang dilaporkan:

ps ax | grep <PID>

akhirnya, "begone with it":

kill -QUIT <PID>

93
2018-03-07 20:24



Kamu dapat memakai lsof -i:3000.

Itu adalah "Daftar Buka File". Ini memberi Anda daftar proses dan file dan port mana yang mereka gunakan.


83
2017-10-04 12:36



Satu-liner untuk mengekstrak PID dari proses menggunakan port 3000 dan membunuhnya.

lsof -ti:3000 | xargs kill

Tanda -t menghapus semuanya kecuali PID dari output lsof, membuatnya mudah untuk membunuhnya.


76
2017-08-05 21:03



Di dalam Anda .bash_profile, buat pintasan untuk terminate proses 3000:

terminate(){
  lsof -P | grep ':3000' | awk '{print $2}' | xargs kill -9 
}

Kemudian, panggil $terminate jika diblokir.


49
2018-05-16 09:17



Untuk secara paksa membunuh proses seperti itu, gunakan perintah berikut

lsof -n -i4TCP:3000 

Di mana 3000 adalah nomor port proses sedang berjalan

ini mengembalikan id proses (PID) dan lari

kill -9 "PID"

Ganti PID dengan nomor yang Anda dapatkan setelah menjalankan perintah pertama

For Instance, if I want kill the process running on port 8080


39
2017-12-28 04:21