The Apple Geek

Чему ты научился сегодня?

Слежение за изменениями файловой системы

При исследовании работы разнообразных программ из интереса или же во время исследования проблемных ситуаций необходимо следить за файловой активностью. Ранее я описал использование 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, которая в графическом виде показывает файловую активность. Программа бесплатная, но предлагает сделать добровольное пожертвование разработчикам. Функциональность видна по двум скриншотам:


Comments