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

fslogger

В книге "Mac OS X Internals. A System Approach" была описана командно-строковая утилита fslogger, написанная автором, позволяющая отслеживать различные изменения файловой системы, например:

  • создание файлов и каталогов;
  • удаление файлов и каталогов;
  • изменения структуры stat (например, изменение разрешений);
  • переименование файлов и каталогов;
  • изменение содержимого;
  • обмен содержимым между двумя файлами (это функция HFS+);
  • изменение информации Finder;
  • изменение владельца.

Пример работы утилиты:

ole-mac:~ ctrld$ sudo fslogger
Password:
fsevents device cloned (fd 4)
fslogger ready
=> received 654 bytes
# Event
  type           = FSE_CREATE_FILE
  pid            = 193 (iChatAgent)
  # Details
    # type           len  data
    FSE_ARG_STRING    66  string = /Users/ctrld/Library/Caches/com.apple.iChat/Pictures/.dat00c1.055
    FSE_ARG_DEV        4  dev    = 0xe000002 (major 14, minor 2)
    FSE_ARG_INO        4  ino    = 2766443
    FSE_ARG_MODE       4  mode   = -rw-r--r--  (0x0081a4, vnode type VREG)
    FSE_ARG_UID        4  uid    = 501 (ctrld)
    FSE_ARG_GID        4  gid    = 20 (staff)
    FSE_ARG_INT64      8  tstamp = 8200465994289
    FSE_ARG_DONE (0xb33f)
# Event
  type           = FSE_CONTENT_MODIFIED
  pid            = 193 (iChatAgent)
  # Details
    # type           len  data
    FSE_ARG_STRING    66  string = /Users/ctrld/Library/Caches/com.apple.iChat/Pictures/.dat00c1.055
    FSE_ARG_DEV        4  dev    = 0xe000002 (major 14, minor 2)
    FSE_ARG_INO        4  ino    = 2766443
    FSE_ARG_MODE       4  mode   = -rw-r--r--  (0x0081a4, vnode type VREG)
    FSE_ARG_UID        4  uid    = 501 (ctrld)
    FSE_ARG_GID        4  gid    = 20 (staff)
    FSE_ARG_INT64      8  tstamp = 8200466392596
    FSE_ARG_DONE (0xb33f)

fseventer

Компания fernLightning на основании идеи fslogger создала программу fseventer, которая в графическом виде показывает файловую активность. Программа бесплатная, но предлагает сделать добровольное пожертвование разработчикам. Функциональность видна по двум скриншотам: