Как отслеживать блокировки файлов (для каждого каталога)

Я совершенно новичок в Linux, и я не знаю, как это сделать.

У меня есть каталог, и я бы хотел отслеживать (вывод в оболочку), когда файл внутри этого каталога get имеет блокировку файла и когда он выпущен.

Было бы хорошо знать, как и другие вещи, например, когда файл создается и аналогичен, но меня в основном интересуют блокировки.

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

Я уверен, что какой-то инструмент для этого существует (я уже установил dtrace но после --help я решил задать вопрос здесь).

Любые указатели сердечно оценили. Если это имеет значение, я запускаю коробку Fedora 14.

Я не проверял, что вы получите то, что хотите, но первое, что я попробую, – это подсистема аудита . Убедитесь, что демон auditd запущен, а затем используйте auditctl чтобы настроить то, что вы хотите регистрировать. Для обычных обращений к файловой системе вы

 auditctl -w /path/to/directory auditctl -a exit,always -S fnctl -S open -S flock -F dir=/path/to/directory 

-S можно использовать для ограничения ведения журнала для конкретных системных вызовов. Журналы отображаются в /var/log/audit/audit.log на Debian и, вероятно, на Fedora.

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

 strace -s9999 -o foo.strace -e file foo