บน linux ฉันสามารถฆ่ากระบวนการที่รู้เพียงพอร์ตที่กำลังฟังอยู่โดยใช้fuser -k 9000/tcp
ฉันจะทำเช่นนั้นบน MacOS ได้อย่างไร
บน linux ฉันสามารถฆ่ากระบวนการที่รู้เพียงพอร์ตที่กำลังฟังอยู่โดยใช้fuser -k 9000/tcp
ฉันจะทำเช่นนั้นบน MacOS ได้อย่างไร
คำตอบ:
lsof -P | grep ':PortNumber' | awk '{print $2}' | xargs kill -9
เปลี่ยนPortNumber
เป็นพอร์ตจริงที่คุณต้องการค้นหา
การเพิ่มแฟล็ก -t และ -i ไปยัง lsof ควรเร่งความเร็วให้ดียิ่งขึ้นโดยไม่จำเป็นต้องใช้ grep และ awk
lsof -nti:NumberOfPort | xargs kill -9
เพิ่ม -n ไปยัง lsof และคุณลบการค้นหา DNS ย้อนกลับจากคำสั่งและลดเวลาทำงานจากนาทีเป็นวินาที
lsof -Pn | grep ':NumberOfPort' | awk '{print $2}' | xargs kill -9
คุณสามารถใช้kill -9 $(lsof -i:PORT -t) 2> /dev/null
โดยที่ PORT คือหมายเลขพอร์ตจริงของคุณ มันจะฆ่ากระบวนการที่ทำงานอยู่บนพอร์ตที่คุณกำหนด
sudo lsof -i: {PORT_NUMBER}
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 582 Thirumal 300u IPv6 0xf91b63da8f10f8b7 0t0 TCP *:distinct (LISTEN)
2. ปิดพอร์ตโดยขั้นตอนการฆ่า PID
sudo kill -9 582
คุณสามารถดูว่าพอร์ตถ้าเปิดโดยคำสั่งนี้
sudo lsof -i :8000
โดยที่ 8000 คือหมายเลขพอร์ต
หากพอร์ตเปิดอยู่ก็ควรส่งคืนสตริงที่มี ID กระบวนการ (PID)
คัดลอก PID นี้และ
kill -9 PID
หากคุณต้องการเห็นพอร์ตที่เปิดอยู่ทั้งหมดคุณสามารถทำการสแกนพอร์ตได้ในแอปพลิเคชัน Network Utility
-9
ไปยังจุดสิ้นสุดจะได้รับนี้ในการทำงาน แต่ผมเชื่อว่าเป็นเพราะธรรมชาติของการประยุกต์ใช้การฟังและไม่แนะนำโดยทั่วไปการปฏิบัติเพื่อkill -9
ที่อยู่