Membebaskan port TCP / IP?


Jawaban:


214

Seperti yang dikatakan orang lain, Anda harus membunuh semua proses yang mendengarkan pada port itu. Cara termudah untuk melakukannya adalah dengan menggunakan perintah fuser (1). Misalnya, untuk melihat semua proses mendengarkan permintaan http pada port 80 (jalankan sebagai root atau gunakan sudo):

# fuser 80/tcp

Jika Anda ingin membunuh mereka, tambahkan saja opsi -k.


1
Saya menemukan bahwa mengirim permintaan ke port juga membersihkannya (saya bukan ahli linux sekalipun)
Matej

1
Untuk menginstal fuser di Debian: sudo apt-get install psmisc ( bitflop.com/document/107 )
Korneel

1
Itu berhasil, tetapi saya harus menginstal psmisc juga pada CentOs 7 ( sudo yum install psmisc)
Marlon Bernardes

1
kill -9 $(fuser 80/tcp 2>/dev/null)
Hanynowsky

76

Untuk mematikan port tertentu di Linux gunakan perintah di bawah ini

sudo fuser -k Port_Number/tcp

ganti Port_Number dengan port Anda yang diduduki.


6
Ini sebenarnya membunuh proses yang membuka port dan bukan port itu sendiri.
vinayc

16

Anda dapat menggunakan tcpkill(bagian dari dsniffpaket) untuk mematikan koneksi yang ada di port yang Anda butuhkan:

sudo tcpkill -9 port PORT_NUMBER

11
ini hanya hang$ sudo tcpkill -9 port 5432 tcpkill: listening on lxcbr0 [port 5432]
Anentropic

16

Dalam jenis terminal:

netstat -anp|grep "port_number"

Ini akan menampilkan detail port. Pergi ke kolom terakhir. Itu akan berada dalam format ini. Misalnya: - PID / java

kemudian jalankan:

kill -9 PID. Worked on Centos5

Untuk Mac:

lsof -n -i :'port-number' | grep LISTEN

Contoh Tanggapan:

java   4744 (PID)  test  364u  IP0 asdasdasda   0t0  TCP *:port-number (LISTEN)

dan kemudian jalankan:

kill -9 PID 

Bekerja di Macbook


jelas ini tidak berfungsi jika kolom PID kosong untuk port itu
Anentropic

1
... dan itu terjadi jika Anda tidak memiliki izin untuk melihat prosesnya ... cobalah sudo netstatuntuk benar-benar melihat PID :)
Anentropic

Saya mencoba untuk membunuh port pada contoh amazon ec2 via dempul cli. Forever mengatakan tidak memiliki proses yang berjalan tetapi port (4200 untuk aplikasi sudut) masih terbuka. Ini adalah satu-satunya perintah yang bekerja untuk saya.
vtechmonkey

9

The "netstat --programs"perintah akan memberikan informasi proses, dengan asumsi Anda akar sedang. Maka Anda harus mematikan proses "menyinggung" yang mungkin mulai lagi hanya untuk mengganggu Anda :-).

Apa yang sebenarnya ingin Anda capai di sini? Solusi akan bervariasi berdasarkan pada proses yang menahan port-port tersebut.


8

Untuk memeriksa semua port:

netstat -lnp

Untuk menutup port terbuka:

fuser -k port_no/tcp

Contoh:

fuser -k 8080/tcp

Dalam kedua kasus Anda dapat menggunakan sudoperintah jika diperlukan.


7

Matikan proses mendengarkan port yang dimaksud. Saya percaya netstat menunjukkan Anda memproses id.


3
netstat -anp | grep <port> kolom terakhir memiliki proses
user1747935

2

Jika Anda benar-benar ingin mematikan suatu proses dengan segera, Anda mengirimnya sinyal KILL daripada sinyal TERM (permintaan terakhir untuk berhenti, yang pertama akan langsung berlaku tanpa pembersihan). Mudah dilakukan:

kill -KILL <pid>

Perlu diketahui bahwa tergantung pada program yang Anda hentikan, kondisinya mungkin rusak parah saat melakukannya. Anda biasanya hanya ingin mengirim sinyal KILL saat terminasi normal tidak berfungsi. Saya bertanya-tanya apa masalah mendasar yang Anda coba selesaikan dan apakah membunuh adalah solusi yang tepat.


0

Saya pikir satu-satunya cara adalah menghentikan proses yang telah membuka port.



Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.