Liên tục theo dõi các tập tin được mở / truy cập bởi một quá trình


25

lsof -p 12345 sẽ liệt kê tất cả các tệp được mở theo quy trình có pid là 12345 nhưng chỉ trong một thời gian cụ thể.

Làm thế nào chúng ta có thể liên tục theo dõi một quá trình từ đầu đến cuối (cho đến khi quá trình kết thúc) để liệt kê / hiển thị mọi tệp duy nhất được quá trình truy cập trong suốt vòng đời của nó?


Câu trả lời:


31

Hãy thử với strace -p 12345; nó nên làm những gì bạn đang cố gắng để đạt được.

Đầu ra có thể được lọc để chỉ hiển thị các tệp đã mở ( bình luận của Dan D. ):

strace -e open -p 12345

Lưu ý: bạn cũng có thể theo dõi nhanh các quy trình đang chạy với strace -e open <command>.


đầu ra không thân thiện và quá nhiều thứ thêm.
MA1

Bạn có thể khắc phục điều đó bằng đường ống - strace -p {pid} | grep -i "Open" | tee files_opened.log. Chìa khóa là grep, cho phép bạn lọc đầu ra cho cuộc gọi hệ thống mà bạn muốn (ví dụ open()).

11
@Ninefingers Thực tế stracecó thể làm điều đó tốt hơn so grepvới -etùy chọn:strace -e open
Dan D.

@DanD oh yeah,

Khi tôi giết lệnh strace, nó cũng giết chết thứ mà nó đang truy tìm. Tại sao điều này xảy ra (cygwin)?
CMCDragonkai

6

Fatrace tiện ích mới sẽ làm điều này: https://launchpad.net/fatrace/

sudo fatrace | grep '(6514)'

Không sử dụng tùy chọn -p, nó có nghĩa ngược lại với ý nghĩa của nó trong lsof hoặc các tiện ích khác.


3

Điều này sẽ lặp lại chạy lệnh của bạn và xóa màn hình mỗi lần:

watch "lsof -p 12345"

CẢNH BÁO: điều này sẽ bỏ lỡ truy cập tệp nhanh và chỉ phù hợp để xem các tệp lâu dài


2
Điều này có phần vụng về so với câu trả lời khác sử dụng strace.
David Foerster

1
Đó là giải pháp không chính xác - một quy trình có thể sử dụng các tệp ở giữa các lần thực hiệnlsof
Dor

@ Bạn có thể đặt thời gian của lsof thành sub 1 giây và tăng độ chính xác của nó. Mặc dù nó vụng về so với những người khác, nhưng bạn đã sai ở chỗ đó là một giải pháp không chính xác.
Jordon Bedwell

Nếu bạn nhìn vào một hoạt động tập tin dài (như sao lưu cơ sở dữ liệu) thì đây có thể là một sự thay thế đơn giản tốt.
jcalfee314
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.