Tôi biết đây là một câu hỏi cũ, nhưng tôi sẽ đề xuất một cách tiếp cận khác trong trường hợp ai đó thấy nó hữu ích. Ban đầu tôi đã đăng bài này như một câu trả lời cho một câu hỏi đã bị lừa với câu hỏi này.
Một lựa chọn là sử dụng sysdig
: một ứng dụng giám sát hệ thống nguồn mở. Sử dụng nó, bạn có thể theo dõi hoạt động trên một tệp theo tên. Giả sử rằng bạn muốn xem quá trình tạo tệp có tên /tmp/example.txt
:
# sysdig fd.name=/tmp/example.txt
567335 16:18:39.654437223 0 touch (5470) < openat fd=3(<f>/tmp/example.txt) dirfd=-100(AT_FDCWD) name=/tmp/example.txt flags=70(O_NONBLOCK|O_CREAT|O_WRONLY) mode=0666
567336 16:18:39.654438248 0 touch (5470) > dup fd=3(<f>/tmp/example.txt)
567337 16:18:39.654438592 0 touch (5470) < dup res=0(<f>/tmp/example.txt)
567338 16:18:39.654439629 0 touch (5470) > close fd=3(<f>/tmp/example.txt)
567339 16:18:39.654439764 0 touch (5470) < close res=0
567342 16:18:39.654441958 0 touch (5470) > close fd=0(<f>/tmp/example.txt)
567343 16:18:39.654442111 0 touch (5470) < close res=0
Từ đầu ra đó, bạn có thể thấy rằng một quá trình có tên touch
pid 5470 đã mở tệp.
Nếu bạn muốn biết thêm thông tin, bạn có thể chạy trong "chế độ chụp" trong đó thu thập dấu vết cuộc gọi hệ thống:
# sysdig -w /tmp/dumpfile.scap
Sau đó đợi tệp được tạo, sau đó dừng sysdig
và chạy:
# csysdig -r /tmp/dumpfile.scap
Điều đó sẽ cho phép bạn khám phá mọi thứ đã xảy ra. Bạn có thể nhấn <F2>
và chọn Files
, nhấn <F4>
để tìm kiếm tên tệp, sau đó nhấn <F6>
để "đào" (sẽ hiển thị cho bạn đầu ra tương tự như lệnh trên). Cùng với đó, bạn có thể sử dụng cùng một cách tiếp cận để tìm thông tin về quá trình thực sự tạo ra tệp.
Có một phiên bản GUI csysdig
được gọi sysdig-inspect
, nếu đó là thêm tách trà của bạn.