Я нашел в IOStat, что часть моего приложения много пишет, но я не знаю, какой процесс он и какие файлы он пишет. В Vista есть инструмент для того, что показывает файлы, которые были активны за последние 30 секунд. Есть ли что-то подобное для Linux?
Инструмент, который показывает мне, какие файлы написаны в Linux?
Ответ 1
Что вы ищете, это lsof
.
Это инструмент командной строки, но есть и GUI для него в sourceforge.
Ответ 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'`
Ответ 4
Чтобы найти все файлы, измененные в последнем 24 часа (последний полный день) в конкретный конкретный каталог и его подкаталоги:
find/directory_path -mtime -1 -print
больше:
Ответ 5
Не уверен в программе, но команда find в утилите имеет множество опций, которые позволят вам находить файлы и/или каталоги, которые были изменены в течение определенного периода времени.
Например:
$ find /home/you -iname "*.txt" -mtime -1 -print
Найденные текстовые файлы, которые были изменены последними 1 день назад.
Вы можете обернуть этот вызов каким-то script или написать свое собственное маленькое приложение, чтобы использовать результаты.
Здесь сайт с дополнительной информацией и примерами:
Ответ 6
Linux предоставляет API уведомлений об изменении файла, называемый "dnotify", а также утилиту командной строки dnotify. Вы можете использовать это, чтобы отслеживать изменения за последние 30 лет.
Я бы, вероятно, написал приложение, которое строит непосредственно на API Linux и отбрасывает все события старше 30 лет.
Ответ 7
lsof отобразит все открытые файлы для данного процесса:
lsof -p