Các lựa chọn thay thế nhanh hơn cho lsof


8

Tôi muốn trích xuất id quá trình của một quy trình nhất định để tắt nó. Quá trình này là một máy chủ web cục bộ sử dụng một cổng nhất định (localhost: 3000) và tôi hiện đang làm như thế này để trích xuất dòng liên quan:

lsof|grep localhost:3000

nhưng lsoflệnh quá chậm. Có cách nào nhanh hơn để trích xuất id quá trình không?


lsof -ichỉ liệt kê các kết nối mạng.
Hanan N.

@HananN. Tôi đã thử nó, nhưng nó vẫn rất chậm. Sử dụng netstat như được đề xuất trong các câu trả lời nhanh hơn nhiều.
sawa

2
lsofkhông phải là phần chậm, sử dụng tất cả các độ phân giải tên và độ phân giải ip là. Làm cho nó tất cả số và nó sẽ đi nhanh.
Marcin

@Marcin Thông tin của bạn thực sự hữu ích cũng như các câu trả lời được đưa ra. Cảm ơn bạn.
sawa

Có bất kỳ lý do tại sao bạn có thể t use killall` pgrephoặc pkill?
Nils

Câu trả lời:


7

Tuy nhiên, hãy thử netstat, tôi không thể nói nó nhanh hơn hay chậm hơn.

netstat -tanp | awk '$4 ~ /:8443$/ {sub(/\/.*/, "", $7); print $7}' | sort -u

1
Tôi hiểu để sử dụng tùy chọn -p, Linux yêu cầu bạn phải là người dùng root.
Nikhil Mulley

1
Nó chắc chắn nhanh hơn vì netstat chỉ liệt kê các kết nối mạng (và không phải tất cả các tệp đang mở)
Matteo

Cảm ơn bạn đã phản hồi nhanh chóng và chính xác. Tôi đã giúp tôi rất nhiều.
sawa

11

Bạn có thể đặt tùy chọn -n cho lsof và sau đó nó loại bỏ độ phân giải DNS, có thể tăng tốc hiển thị


Vâng, điều đó dường như giải quyết vấn đề, và rất hữu ích. Đó là một phần được đề xuất bởi Marcin trong một bình luận cho câu trả lời của tôi.
sawa

1
thời gian báo cáo lsof mất 10 giây bất kể tùy chọn n.
dùng1133275

2
sudo ss -p -l '( sport = :3000 )'|awk -F"," 'NR!=1{print $2}'

Điều này sẽ in PID của quá trình nghe trên 3000

time báo cáo rằng điều này đã hoàn thành trong 0m0.018s.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.