ซ้ำเป็นไปได้: การ
ค้นหากระบวนการที่ใช้พอร์ตที่แน่นอนใน Linux
ฉันใช้ Ubuntu Linux 11.04 ฉันจะเขียนเชลล์สคริปต์นิพจน์ที่จะค้นหากระบวนการที่ทำงานบนพอร์ต 4444 แล้วฆ่ากระบวนการได้อย่างไร
ซ้ำเป็นไปได้: การ
ค้นหากระบวนการที่ใช้พอร์ตที่แน่นอนใน Linux
ฉันใช้ Ubuntu Linux 11.04 ฉันจะเขียนเชลล์สคริปต์นิพจน์ที่จะค้นหากระบวนการที่ทำงานบนพอร์ต 4444 แล้วฆ่ากระบวนการได้อย่างไร
คำตอบ:
คุณสามารถใช้lsof
เพื่อค้นหากระบวนการ:
lsof -t -i:4444
จะแสดงเฉพาะ pid ของกระบวนการที่ฟังบนพอร์ต 4444 คุณสามารถพูดได้
kill `lsof -t -i:4444`
ถ้าคุณกล้า
คุณใช้lsof
:
# lsof -n | grep TCP | grep LISTEN | grep 4444
ผลลัพธ์จะเป็นดังนี้:
pname 16125 user 28u IPv6 4835296 TCP *:4444 (LISTEN)
โดยที่คอลัมน์แรกคือชื่อกระบวนการและคอลัมน์ที่สองคือรหัสกระบวนการ จากนั้นคุณแยกวิเคราะห์ผลลัพธ์ค้นหาว่า id กระบวนการ (PID) คืออะไรและใช้kill
คำสั่งเพื่อฆ่ามัน
หรือคุณสามารถใช้netstat -ap
หากlsof
ระบบของคุณไม่ว่าง (เพราะมันไม่ได้อยู่ในระบบ busybox ที่ฉันทำงานด้วยเป็นประจำ)
kill -9 `netstat -lanp --protocol=inet | grep 4444 | awk -F" " '{print $7}' | awk -F"/" '{print $1}'`
ใช้ netstat เพื่อฟังรายการซ็อกเก็ต INET พร้อมพอร์ตตัวเลขและกระบวนการพาเรนต์ ตัวกรองสำหรับสตริง 4444 นำคอลัมน์คอลัมน์ที่ 7 (pid / process) ออกแล้วแยกเพิ่มเติมด้วย "/" เพื่อรับ pid ส่งผ่านไปยังคำสั่ง kill