2008-09-19 24 views
85

lsof là một tiện ích dòng lệnh mạnh mẽ không thể tin được đối với các hệ thống Unix. Nó liệt kê các tệp đang mở, hiển thị thông tin về chúng. Và vì hầu hết mọi thứ đều là một tệp trên hệ thống Unix, lsof có thể cung cấp cho hệ thống quản trị dữ liệu một tấn dữ liệu chẩn đoán hữu ích.Hướng dẫn sinh tồn lsof

Một số cách phổ biến và hữu ích nhất khi sử dụng lsof là gì và thiết bị chuyển mạch dòng lệnh nào được sử dụng cho điều đó?

Trả lời

10

lsof -i sẽ cung cấp danh sách các ổ cắm mạng mở. Tùy chọn -n sẽ ngăn các tra cứu DNS, điều này rất hữu ích khi kết nối mạng của bạn chậm hoặc không đáng tin cậy.

+3

'lsof -i' sẽ * chỉ * hiển thị cho bạn các ổ cắm mà bạn có quyền truy cập vào không gian tên của bạn (và được coi là" internet "ổ cắm thông qua nội tâm, không chỉ bất kỳ loại ổ cắm mạng nào). Nếu không, tay cầm của loại 'sock' sẽ không xuất hiện trong danh sách. –

10

Xem những tập tin một ứng dụng đang chạy hoặc daemon có mở:

lsof -p pid 

đâu pid là quá trình ID của ứng dụng hoặc daemon.

17
lsof -i :port 

sẽ cho bạn biết chương trình nào đang nghe trên một cổng cụ thể.

+1

Nó không giới hạn "nghe", vì vậy nếu bạn chỉ định 'lsof -i: 8080' và bạn có một loạt các quy trình kết nối với proxy trên cổng 8080, bạn cũng sẽ nhận được những điều đó. –

98

Để hiển thị tất cả các kết nối mạng có liên quan đến một trao port:

lsof -iTCP -i :port 
lsof -i :22 

Để hiển thị các kết nối đến một máy chủ cụ thể, sử dụng @host

lsof [email protected] 

Hiện kết nối dựa trên máy chủ và các cổng sử dụng @host:port lsof [email protected]:22

grep ping cho LISTEN cho thấy những gì cổng hệ thống của bạn đang chờ đợi kết nối trên:

lsof -i| grep LISTEN 

Hiện những gì một người dùng nào đó có mở sử dụng -u:

lsof -u daniel 

Xem những tập tin và kết nối mạng mà lệnh đang sử dụng với -c

lsof -c syslog-ng 

Việc chuyển đổi -p cho phép bạn xem những gì một quá trình ID cho có mở, đó là tốt cho việc học thêm về quá trình không rõ:

lsof -p 10075 

Các -t lựa chọn lợi nhuận chỉ là một PID

lsof -t -c Mail 

Sử dụng -t-c tùy chọn cùng nhau, bạn có thể HUP quy trình

kill -HUP $(lsof -t -c sshd) 

Bạn cũng có thể sử dụng -t với -u để giết tất cả mọi thứ một người dùng có mở

kill -9 $(lsof -t -u daniel) 
+0

Nguồn: http://danielmiessler.com/study/lsof/ –

+0

Một cách tốt là sử dụng đá quý lừa đảo, nếu bạn sử dụng Ruby. Nó chỉ thuận tiện, CLI hướng cộng đồng để lừa đảo nhiều tiện ích (ngôn ngữ độc lập). Hãy thử [try] (http://cheat.errtheblog.com/). –

7
lsof +f -- /mountpoint 

danh sách các quá trình sử dụng các file trên núi gắn ở/mountpoint. Đặc biệt hữu ích cho việc tìm kiếm (các) quy trình nào đang sử dụng một thanh USB hoặc CD/DVD được gắn.

10
lsof +D /some/directory 

Sẽ hiển thị đệ quy tất cả các tệp được mở trong thư mục. + d chỉ ở cấp cao nhất.

Điều này rất hữu ích khi bạn có tỷ lệ chờ đợi cao% đối với IO, tương quan với việc sử dụng trên một FS cụ thể và muốn xem quy trình nào đang nhai io của bạn.