Làm thế nào để tìm ra phần bù tập tin của một tập tin đã mở?


26

Vấn đề của tôi là với lsof -p pid tôi có thể tìm ra danh sách các tệp đã mở của một tiến trình có id tiến trình là pid. Nhưng có cách nào để tìm ra phần bù của mỗi tệp được truy cập không?

Xin vui lòng cho tôi một số gợi ý?

Câu trả lời:


38

Trên linux, bạn có thể tìm thấy vị trí của số mô tả tập tin Ncủa quá trình PIDtrong /proc/$PID/fdinfo/$N. Thí dụ:

$ cat /proc/687705/fdinfo/36
pos:    26088
flags:  0100001

Cùng một tệp có thể được mở nhiều lần với các vị trí khác nhau bằng cách sử dụng một số mô tả tệp, vì vậy bạn sẽ phải chọn một tệp có liên quan trong trường hợp có nhiều hơn một. Sử dụng:

$ readlink /proc/$PID/fd/$N

để biết tập tin mà bộ mô tả tập tin tương ứng được đính kèm là gì (nó có thể không phải là một tập tin, trong trường hợp này là symlink đang treo lủng lẳng).


1
Câu trả lời của bạn rất hay.
Tạ Thành Đình

12

lsofcó thể làm điều này, với -otùy chọn.

Trong Linux, nó lấy thông tin từ đó /proc, vì vậy bạn cũng có thể lấy nó ở đó .


Đã lâu lắm rồi kể từ câu hỏi cuối cùng của tôi và tôi đã không ở đây lâu. Cảm ơn bạn đã trả lời.
Tạ Thành Định

Tôi có thể xác nhận điều này hoạt động là tốt. Tuy nhiên, phần bù được đưa ra là HEX.
Benjamin
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.