Xác định tập tin nào đang được truy cập bởi một quy trình


9

Làm thế nào tôi có thể tìm ra tất cả các tệp mà một quá trình cụ thể truy cập?

Tôi đang sử dụng Ubuntu 9.04.

Câu trả lời:


11

lsof sẽ liệt kê các tệp đang mở và ID tiến trình liên quan. Nó liệt kê tất cả mọi thứ nếu không có tùy chọn được đưa ra.

Có một tùy chọn, -pđể liệt kê các tệp đang mở cho một quy trình. Vì vậy, đối với một quy trình với PID 6714, điều này sẽ liệt kê các tệp được mở bởi quy trình đó:

    lsof -p 6714

Để liệt kê chỉ các tệp thông thường grep có thể được sử dụng để lọc đầu ra của lsof:

    lsof -p 6714 | grep REG

Nếu nó cần mạnh hơn so với grep thì -Ftùy chọn có thể được sử dụng, nhưng sau đó nó trở nên phức tạp hơn. Từ trang lsof man :

Khi tùy chọn -F được chỉ định, lsof tạo đầu ra phù hợp để xử lý bởi một chương trình khác - ví dụ: tập lệnh awk hoặc Perl hoặc chương trình C.

Nó phụ thuộc vào yêu cầu của bạn.


1
Tôi muốn thêm '-b' vào lsof, nó sẽ nhanh hơn một chút. Ngoài ra, tôi thêm 2> / dev / null trước ống vào grep.
kbyrd
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.