Bagaimana saya menemukan (dan membunuh) proses yang mendengarkan/menggunakan port tcp? I'm pada mac os x.
Kadang-kadang, setelah kecelakaan atau beberapa bug, saya rails app mengunci port 3000. Saya dapat't menemukan itu menggunakan ps -ef...
Ketika melakukan
rails server
Saya mendapatkan
di - bind(2) (Errno::EADDRINUSE)
2014 update:
Untuk menyelesaikan beberapa jawaban di bawah ini: Setelah mengeksekusi perintah membunuh, menghapus file pid mungkin diperlukan rm ~/mypath/myrailsapp/tmp/pid/server.pid
netstat
netstat -vanp tcp | grep 3000
-p
), menggunakan lsof
sudo lsof-i tcp:3000
netstat -vanp --tcp | grep 3000
Tidak ada yang di atas bekerja untuk saya. Orang lain dengan pengalaman saya bisa mencoba berikut (bekerja untuk saya):
Run:
lsof -i :3000 (where 3000 is your current port in use)
kemudian cek status dilaporkan PID
ps ax | grep <PID>
akhirnya, "pergilah dengan itu,":
kill -QUIT <PID>
Ini satu baris perintah mudah untuk diingat:
npx membunuh-port 3000
Untuk alat yang lebih kuat dengan pencarian:
npx fkill-cli
PS: Mereka menggunakan pihak ketiga javascript paket. npx
datang dibangun dengan Node.js.
Solusi termudah:
Untuk single port:
kill $(lsof -ti:3000) #3000 is the port to be freed
Membunuh beberapa port dengan satu baris perintah:
kill $(lsof -ti:3000,3001) #3000 and 3001 are the ports to be freed
lsof -ti:3000
82500 (Process ID)
lsof -ti:3001
Delapan puluh dua ribu empat ratus sembilan puluh sembilan
lsof -ti:3001,3000
Delapan puluh dua ribu empat ratus sembilan puluh sembilan Delapan puluh dua ribu lima ratus
membunuh $(lsof -ti:3001,3000)
Berakhir baik 82499 dan 82500 proses dalam satu perintah.
Anda dapat menggunakan ini dalam paket.json
script ini:
"script": { "mulai": "membunuh $(lsof -ti:3000,3001) && npm mulai" }
Untuk tegas membunuh proses seperti itu, gunakan perintah berikut
lsof -n -i4TCP:3000
Di mana 3000 adalah nomor port proses yang berjalan pada
ini kembali proses id(PID) dan menjalankan
kill -9 "PID"
Mengganti PID dengan jumlah yang anda dapatkan setelah menjalankan perintah pertama
Salah satu cara untuk membunuh proses pada sebuah port untuk menggunakan python library: freeport (https://pypi.python.org/pypi/freeport/0.1.9) . Setelah diinstal, cukup:
# install freeport
pip install freeport
# Once freeport is installed, use it as follows
$ freeport 3000
Port 3000 is free. Process 16130 killed successfully
Cara yang mungkin untuk mencapai hal ini:
top
Atas perintah adalah cara tradisional untuk melihat sistem penggunaan sumber daya dan melihat proses yang memakan sebagian besar sumber daya sistem. Atas menampilkan daftar proses, dengan orang-orang yang menggunakan sebagian besar CPU di atas.
ps
Ps perintah daftar proses yang berjalan. Perintah berikut daftar semua proses yang berjalan pada sistem anda:
ps -A
Anda bisa juga pipa output melalui grep untuk mencari proses tertentu tanpa menggunakan perintah lain. Perintah berikut ini akan melakukan pencarian untuk Firefox proses:
ps -A | grep firefox
Cara yang paling umum dari sinyal lewat program adalah dengan perintah kill.
kill PID_of_target_process
lsof
Daftar semua file yang terbuka dan proses yang dibuka mereka.
lsof -i -P | grep -i "listen"
kill -9 PID
atau
lsof -i tcp:3000
Kedua perintah ini akan membantu anda menemukan dan membunuh proses server
- lsof -wni tcp:3000
- kill -9 pid