Có thể trùng lặp:
Tìm quá trình đang sử dụng một cổng nhất định trong Linux
Tôi đang sử dụng Ubuntu Linux 11.04. Làm thế nào để tôi viết một biểu thức kịch bản shell sẽ tìm thấy quá trình đang chạy trên cổng 4444 và sau đó giết tiến trình?
Có thể trùng lặp:
Tìm quá trình đang sử dụng một cổng nhất định trong Linux
Tôi đang sử dụng Ubuntu Linux 11.04. Làm thế nào để tôi viết một biểu thức kịch bản shell sẽ tìm thấy quá trình đang chạy trên cổng 4444 và sau đó giết tiến trình?
Câu trả lời:
Bạn có thể sử dụng lsof
để tìm quá trình:
lsof -t -i:4444
sẽ chỉ liệt kê pid của quá trình lắng nghe trên cổng 4444. Bạn chỉ có thể nói
kill `lsof -t -i:4444`
nếu bạn dũng cảm
Bạn sử dụng lsof
:
# lsof -n | grep TCP | grep LISTEN | grep 4444
Đầu ra sẽ giống như:
pname 16125 user 28u IPv6 4835296 TCP *:4444 (LISTEN)
Trong đó cột đầu tiên là tên quy trình và cột thứ hai là id quá trình. Sau đó, bạn phân tích đầu ra, tìm ra id quá trình (PID) là gì và sử dụng kill
lệnh để tiêu diệt nó.
Ngoài ra, bạn có thể sử dụng netstat -ap
nếu lsof
không có sẵn trên hệ thống của bạn (vì nó không có trên hệ thống busybox tôi thường xuyên làm việc).
kill -9 `netstat -lanp --protocol=inet | grep 4444 | awk -F" " '{print $7}' | awk -F"/" '{print $1}'`
Sử dụng netstat để liệt kê các socket INET đang nghe với các cổng số và các tiến trình cha. Các bộ lọc cho chuỗi 4444, lấy ra cột thứ 7 (tên pid / process) và tiếp tục phân tách nó bằng "/" để lấy pid. Vượt qua đó để giết lệnh.