การเพิ่มพอร์ต TCP / IP


146

netstat -tulnap แสดงให้ฉันเห็นว่าพอร์ตใดที่ใช้งานอยู่ จะเพิ่มพอร์ตใน Linux ได้อย่างไร

คำตอบ:


214

อย่างที่คนอื่นพูดคุณจะต้องฆ่ากระบวนการทั้งหมดที่กำลังฟังบนพอร์ตนั้น วิธีที่ง่ายที่สุดในการทำเช่นนั้นคือใช้คำสั่ง fuser (1) ตัวอย่างเช่นหากต้องการดูกระบวนการทั้งหมดที่รับฟังคำขอ http บนพอร์ต 80 (เรียกใช้เป็นรูทหรือใช้ sudo):

# fuser 80/tcp

หากคุณต้องการที่จะฆ่าพวกเขาเพียงแค่เพิ่มตัวเลือก -k


1
ฉันพบว่าการส่งคำขอไปยังพอร์ตนั้นล้างด้วย (ฉันไม่ใช่ผู้เชี่ยวชาญของ linux)
Matej

1
ในการติดตั้ง fuser บน Debian: sudo apt-get install psmisc ( bitflop.com/document/107 )
Korneel

1
มันใช้งานได้ แต่ฉันต้องติดตั้ง psmisc บน CentOs 7 ( sudo yum install psmisc)
Marlon Bernardes

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

76

หากต้องการฆ่าพอร์ตเฉพาะใน Linux ให้ใช้คำสั่งด้านล่าง

sudo fuser -k Port_Number/tcp

แทนที่ Port_Number ด้วยพอร์ตที่คุณใช้งานอยู่


6
นี่เป็นการฆ่ากระบวนการที่เปิดพอร์ตไม่ใช่ตัวพอร์ตเอง
vinayc

16

คุณสามารถใช้tcpkill(ส่วนหนึ่งของdsniffแพ็คเกจ) เพื่อฆ่าการเชื่อมต่อที่อยู่ในพอร์ตที่คุณต้องการ:

sudo tcpkill -9 port PORT_NUMBER

11
นี่แค่แฮงค์$ sudo tcpkill -9 port 5432 tcpkill: listening on lxcbr0 [port 5432]
Anentropic

16

ในประเภทอาคาร:

netstat -anp|grep "port_number"

มันจะแสดงรายละเอียดพอร์ต ไปที่คอลัมน์สุดท้าย มันจะอยู่ในรูปแบบนี้ ตัวอย่างเช่น: - PID / java

จากนั้นดำเนินการ:

kill -9 PID. Worked on Centos5

สำหรับ MAC:

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

การตอบสนองตัวอย่าง:

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

แล้วดำเนินการ:

kill -9 PID 

ทำงานบน Macbook


เห็นได้ชัดว่าสิ่งนี้ไม่ทำงานหากคอลัมน์ PID ว่างสำหรับพอร์ตนั้น
Anentropic

1
... และที่เกิดขึ้นถ้าคุณไม่ได้รับอนุญาตให้ดูกระบวนการ ... ลองsudo netstatจริงเห็น PIDs :) ความ
Anentropic

ฉันพยายามฆ่าพอร์ตในตัวอย่าง amazon ec2 ผ่าน putty cli ตลอดกาลกล่าวว่ามันไม่มีกระบวนการทำงาน แต่พอร์ต (4200 สำหรับแอพเชิงมุม) ยังคงเปิดอยู่นี่เป็นคำสั่งเดียวที่ทำงานสำหรับฉัน
vtechmonkey

9

"netstat --programs"คำสั่งจะให้ข้อมูลกระบวนการสมมติว่าคุณกำลังราก จากนั้นคุณจะต้องฆ่ากระบวนการ "โจมตี" ซึ่งอาจเริ่มต้นใหม่อีกครั้งเพียงเพื่อรบกวนคุณ :-)

คุณพยายามทำอะไรที่นี่จริง ๆ ? โซลูชั่นจะแตกต่างกันไปตามกระบวนการที่ถือพอร์ตเหล่านั้น


8

วิธีตรวจสอบพอร์ตทั้งหมด:

netstat -lnp

วิธีปิดพอร์ตที่เปิดอยู่:

fuser -k port_no/tcp

ตัวอย่าง:

fuser -k 8080/tcp

ในทั้งสองกรณีคุณสามารถใช้sudoคำสั่งหากจำเป็น


7

ฆ่ากระบวนการที่กำลังฟังพอร์ตที่เป็นปัญหา ฉันเชื่อว่า netstat แสดงรหัสกระบวนการให้คุณ


3
netstat -anp | grep <port> คอลัมน์สุดท้ายมีกระบวนการ
user1747935

2

หากคุณต้องการที่จะฆ่ากระบวนการทันทีคุณส่งสัญญาณ KILL แทนสัญญาณ TERM (การร้องขอหลังหยุดการทำงานครั้งแรกจะมีผลทันทีโดยไม่มีการล้างข้อมูลใด ๆ ) มันง่ายที่จะทำ:

kill -KILL <pid>

โปรดทราบว่าขึ้นอยู่กับโปรแกรมที่คุณหยุดสถานะอาจได้รับความเสียหายอย่างรุนแรงเมื่อทำเช่นนั้น โดยปกติคุณต้องการส่งสัญญาณ KILL เมื่อการเลิกจ้างปกติไม่ทำงาน ฉันสงสัยว่าปัญหาพื้นฐานคืออะไรที่คุณพยายามแก้ไขและการฆ่าเป็นทางออกที่ถูกต้องหรือไม่




-14

การปิดเครื่องคอมพิวเตอร์จะฆ่ากระบวนการสำหรับฉันทุกครั้ง


การปิดเครื่องเซิร์ฟเวอร์หายาก
waqas

23
คุณได้รับตรา "ที่สนุกที่สุด" ของคุณหรือไม่
jplandrain

ไม่จำเป็นต้องปิดคอมพิวเตอร์ของคุณ
Anil Chahal

ความคิดที่ดีที่สุดตลอดกาล 10/10
Valentin Roudge

10
ต่างจากคำตอบอื่น ๆ แน่นอนว่ามันจะใช้ได้แน่นอน
Anentropic
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.