Làm thế nào để theo dõi tất cả các tệp một quy trình mở trong vòng đời của nó


Câu trả lời:


25

Sử dụng lệnh strace, nó có thể được thực hiện với một cái gì đó như:

strace -e trace=open program [arguments]

Điều này sẽ hiển thị tất cả các tệp mà một quá trình đã cố gắng truy cập. Người ta có thể nghĩ rằng một cái gì đó như strace -e trace=open program [arguments] | grep -v ' = -1 ENOENT'có thể cải thiện tình hình, nhưng nó cũng không đúng. Sau này sẽ không phát hiện các cuộc gọi chưa hoàn thành và sau đó tiếp tục các cuộc gọi đến open.
facetus

2
Lưu ý rằng tín hiệu bạn cần có thể là openat.
merlinND

6

Tôi không chắc tôi đã hiểu chính xác những gì bạn muốn làm với điều này. Nhưng, bạn đã xem xét bước đi? Nó hiển thị tất cả các cuộc gọi hệ thống bao gồm các tập tin.

EDIT: Đừng quên tùy chọn -f cho phép bạn theo dõi các quy trình rẽ nhánh.


1
Gỡ lỗi những tập tin cấu hình nào được đọc bởi một ứng dụng
Peter Smit
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.