2009-07-25 5 views
11

Tôi tìm thấy trong IOStat, rằng một số phần của ứng dụng của tôi là viết rộng rãi, nhưng tôi không biết đó là quá trình và những gì các tập tin nó được ghi vào. Trong Vista, có một công cụ hiển thị các tập tin đã được kích hoạt trong 30 giây vừa qua. Có cái gì đó tương tự cho Linux?Công cụ cho tôi biết tệp nào được viết bằng Linux?

+0

Jus t tò mò: Tôi biết filemon, nhưng bạn đang nhắc đến công cụ nào trong Vista? –

+0

@Ludwig Bảng điều khiển -> Công cụ quản trị -> Độ tin cậy và màn hình hiệu suất. Sau đó nhấp vào thanh có ghi là Đĩa. Nó hiển thị các tệp hoạt động mạnh nhất và các quy trình nào đang đọc hoặc viết. –

+0

Đã có trên ServerFault: http: // serverfault.com/questions/224629/see-what-files-được viết-to-like-iotop-nhưng-cho-tệp-không-quy trình –

Trả lời

3

gì bạn đang tìm kiếm là lsof. Đó là công cụ dòng lệnh nhưng cũng có một số GUI for it at sourceforge.

+3

lsof sẽ chỉ hiển thị cho bạn các tệp mà quy trình đã mở bây giờ PiedPiper

3

Để tìm tất cả các file sửa đổi trong 24 giờ qua (ngày cuối cùng đầy đủ) trong một thư mục cụ thể nói riêng và của thư mục con:

tìm/directory_path -mtime -1 -print

hơn tại địa chỉ:

http://www.mydigitallife.info/2006/01/19/find-files-that-are-modified-today-or-since-certain-time-ago-in-unix/

+0

Và cũng có một số cách để theo dõi hoạt động (đọc ghi kb/s) trên các tệp riêng lẻ? Máy chủ khá hoạt động và nhiều tệp được thay đổi, nhưng tôi cần những tệp có mức chuyển cao nhất ... – smint

2

Không chắc chắn về một chương trình nhưng lệnh tìm trong tiện ích có nhiều tùy chọn cho phép bạn tìm các tệp và/hoặc thư mục đã được sửa đổi trong một khoảng thời gian nhất định.

Ví dụ:

$ find /home/you -iname "*.txt" -mtime -1 -print 

sẽ tìm thấy tập tin văn bản được sửa đổi lần cuối 1 ngày trước.

Bạn có thể kết thúc cuộc gọi này bằng một số loại tập lệnh hoặc viết ứng dụng nhỏ nhanh chóng của riêng bạn để sử dụng kết quả.

Đây là một trang web với một số thông tin nhiều hơn và các ví dụ:

http://www.cyberciti.biz/faq/howto-finding-files-by-date/

1

Linux cung cấp API thông báo thay đổi tệp có tên "dnotify", cùng với tiện ích dòng lệnh dnotify. Bạn có thể sử dụng điều đó để theo dõi các thay đổi trong 30 giây qua.

Tôi có thể viết một ứng dụng xây dựng trực tiếp trên API Linux và loại bỏ tất cả các sự kiện cũ hơn 30 giây.

+0

Cảm ơn bạn, tôi đã hy vọng có điều gì đó hiện có. – smint

1

lsof sẽ liệt kê tất cả các file mở cho một quá trình nhất định:

lsof -p

7
strace -e trace=file -- <command> 

sẽ cho bạn thấy chính xác những tập tin ứng dụng của bạn đang đọc và writong

+0

Vết nứt có hoạt động trên toàn bộ cây quá trình hay chỉ một quy trình? –

+0

Nó sẽ không hoạt động trên toàn bộ cây nhưng bạn có thể sử dụng tùy chọn '-p pid' để đính kèm tối đa 32 quy trình – PiedPiper

+2

hoặc sử dụng '-f' để theo dõi quá trình con khi chúng được tạo bởi các quy trình được truy tìm hiện tại của ngã ba (2) gọi hệ thống – PiedPiper

5

Nếu bạn muốn xem tất cả các tệp truy cập trong thời gian thực (tối đa 32 quy trình), bạn có thể sử dụng lệnh này:

strace -f -e trace=file `ps aux | tail -n +2 | awk '{ORS=" "; print $2}' | sed -e 's/\([0-9]*\)/\-p \1 /g' | sed -e 's/\-p $//g'`