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 ý?
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:
Trên linux, bạn có thể tìm thấy vị trí của số mô tả tập tin N
của quá trình PID
trong /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).
lsof
có thể làm điều này, với -o
tù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ó ở đó .