Как отслеживать, какие процессы обращаются к конкретному файлу в Unix? - PullRequest
7 голосов
/ 08 сентября 2010

У меня есть файл, и многие процессы (и потоки процессов) обращаются к нему.

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

  • Есть ли какая-нибудь утилита Unix, которая делает что-то подобное?

  • Если такой утилиты не существует, как мне запрограммировать ее, используя скрипт (shell, Perl) или программу (C, C ++)?

Ответы [ 4 ]

9 голосов
/ 08 сентября 2010

В Linux inotify может быть тем, что вы ищете.

6 голосов
/ 08 сентября 2010

Я думаю, что основная функциональность, которую вы ищете, находится в команде UNIX fuser.

Это скажет вам, какие процессы используют файл (или порт, если хотите).

2 голосов
/ 08 сентября 2010

FAM - Монитор изменения файлов http://oss.sgi.com/projects/fam/ или Gamin http://people.gnome.org/~veillard/gamin/

может помочь вам (кажется, gamin поддерживается, хотя я не могу сказать то же самое для FAM).прикрепите ваше приложение к FAM / Gamin и тогда вы будете уведомлены, если что-то случилось с просматриваемыми файлами.Для деталей предлагаю: http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=bks&fname=/SGI_Developer/books/IIDsktp_IG/sgi_html/ch08.html

1 голос
/ 08 сентября 2010

Возможно, вы захотите взглянуть на lsof.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...