2010-09-08 25 views
7

Tôi có một tập tin và rất nhiều quá trình (và quá trình xử lý) đang truy cập vào nó.Làm thế nào để giám sát các quy trình truy cập một tập tin cụ thể trong Unix?

Tôi muốn theo dõi tệp để nhận danh sách tất cả các quy trình đã cố truy cập tệp. Có thể ghi lại các dấu thời gian cũng sẽ là tuyệt vời cho mục đích ghi nhật ký, mặc dù tôi có thể làm mà không có nó.

  • Có tiện ích Unix nào tương tự không?

  • Trong trường hợp không có tiện ích như vậy tồn tại, làm thế nào tôi nên lập trình này bằng cách sử dụng một kịch bản (shell, Perl) hoặc một chương trình (C, C++)?

+2

Có lẽ không có cách Unix chung nào để thực hiện việc này. Ví dụ Linux có inotify (xem câu trả lời của Carlos) nhưng inotify chỉ tồn tại trong Linux. Các giống Unix khác có các phương pháp khác nhau. – JeremyP

Trả lời

6

Tôi nghĩ chức năng cơ bản bạn đang tìm kiếm nằm trong lệnh UNIX fuser.

Điều này sẽ cho bạn biết quy trình nào đang sử dụng tệp (hoặc cổng nếu bạn muốn).

+0

Mặc dù thừa nhận rằng nó không tạo báo cáo dựa trên thời gian - nhưng phải dễ dàng xây dựng để tạo ra những gì bạn cần – lucas1000001

1

Bạn có thể muốn xem lsof.

+1

Một chương trình có thể đã mở và đóng nó khi tôi chạy 'lsof'. Trong trường hợp này, nó sẽ không được đăng ký với 'lsof'. Tôi cần một cách để liên tục theo dõi các tập tin để bất cứ khi nào nó được truy cập bởi một số quá trình, kích hoạt một bản ghi truy cập vào một logfile. – Lazer

9

Trong Linux, inotify có thể là những gì bạn đang tìm kiếm.

+0

Tôi thứ hai! inotify cũng cho phép bạn thêm các móc chạy vào các thời điểm nhất định: khi một tệp được truy cập, được ghi vào, nối thêm vào, v.v. Tôi đã sử dụng nó một thời gian trước đây để tự động git cam kết các tệp được sửa đổi trong một thư mục khi chúng thay đổi hoặc đã bị xóa – mfontani

2

FAM - File Thay đổi Màn hình http://oss.sgi.com/projects/fam/ hoặc Gamin http://people.gnome.org/~veillard/gamin/

có thể giúp bạn (Gamin dường như duy trì trong khi tôi không thể nói như vậy cho FAM).

Bạn có thể đính kèm ứng dụng của mình vào FAM/Gamin và sau đó bạn sẽ được thông báo nếu có sự cố xảy ra với các tệp đã xem. Để biết chi tiết, tôi đề nghị: http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=bks&fname=/SGI_Developer/books/IIDsktp_IG/sgi_html/ch08.html

Các vấn đề liên quan