Инструмент, который показывает мне, какие файлы написаны в Linux? - PullRequest
11 голосов
/ 26 июля 2009

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

Ответы [ 7 ]

8 голосов
/ 26 июля 2009
strace -e trace=file -- <command>

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

6 голосов
/ 25 июля 2012

Если вы хотите видеть все обращения к файлам в режиме реального времени (до 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'` 
3 голосов
/ 26 июля 2009

То, что вы ищете, это lsof. Это инструмент командной строки, но есть также GUI для него в sourceforge .

3 голосов
/ 26 июля 2009

Чтобы найти все файлы, измененные за последние 24 часа (последний полный день), в определенном конкретном каталоге и его подкаталогах:

find / directory_path -mtime -1 -print

больше по адресу:

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

2 голосов
/ 26 июля 2009

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

lsof -p

2 голосов
/ 26 июля 2009

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

Например:

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

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

Вы можете обернуть этот вызов в какой-нибудь скрипт или написать собственное небольшое приложение для использования результатов.

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

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

1 голос
/ 26 июля 2009

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

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

...