Инструмент, который показывает мне, какие файлы написаны в Linux?

Я нашел в IOStat, что часть моего приложения много пишет, но я не знаю, какой процесс он и какие файлы он пишет. В Vista есть инструмент для того, что показывает файлы, которые были активны за последние 30 секунд. Есть ли что-то подобное для Linux?

Ответ 2

strace -e trace=file -- <command>

покажет вам, какие файлы читает ваше приложение и записывает

Ответ 3

Если вы хотите просмотреть все обращения к файлам в режиме реального времени (до 32 процессов), вы можете использовать эту команду:

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'` 

Ответ 5

Не уверен в программе, но команда find в утилите имеет множество опций, которые позволят вам находить файлы и/или каталоги, которые были изменены в течение определенного периода времени.

Например:

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

Найденные текстовые файлы, которые были изменены последними 1 день назад.

Вы можете обернуть этот вызов каким-то script или написать свое собственное маленькое приложение, чтобы использовать результаты.

Здесь сайт с дополнительной информацией и примерами:

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

Ответ 6

Linux предоставляет API уведомлений об изменении файла, называемый "dnotify", а также утилиту командной строки dnotify. Вы можете использовать это, чтобы отслеживать изменения за последние 30 лет.

Я бы, вероятно, написал приложение, которое строит непосредственно на API Linux и отбрасывает все события старше 30 лет.

Ответ 7

lsof отобразит все открытые файлы для данного процесса:

lsof -p