Мониторинг активности файловой системы

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

Как мне это сделать?

One Solution collect form web for “Мониторинг активности файловой системы”

Вы можете использовать strace для этого:

 strace -f -e trace=file command args... 

strace отслеживает системные вызовы и выводит описание их стандартной ошибки по мере их возникновения. Опция -f указывает, что она также отслеживает дочерние процессы и потоки. -e позволяет вам изменять вызовы, которые он будет отслеживать: -e trace=file будет регистрировать каждое использование open , unlink и т. д., но без действий без файла.

Если вы хотите увидеть, что было прочитано и записано в файлы, измените его на -e trace=file,read,write вместо этого; вы также можете просмотреть любые дополнительные вызовы, которые вы хотите изучить там. Если вы оставите этот аргумент полностью, вы получите каждый системный вызов.

Результат такой же (я запустил mkdir /tmp/test в трассированной оболочке):

 [pid 1444] execve("/usr/bin/mkdir", ["mkdir", "/tmp/test4"], [/* 33 vars */]) = 0 [pid 1444] access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) [pid 1444] open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 [pid 1444] open("/usr/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 [pid 1444] open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3 [pid 1444] mkdir("/tmp/test", 0777) = 0 [pid 1444] +++ exited with 0 +++ --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=1444, si_status=0, si_utime=0, si_stime=0} --- 

Вы можете подключиться к файлу вместо терминала с -o filename и сделать вывод (даже) более подробным с -v. Также можно прикрепить к уже существующему процессу с -p PID , если это более полезно.

Если вы хотите сделать это программно, а не проверять себя, посмотрите на вызов ptrace , на котором строится strace .

  • Сценарий Bash ждет процессов и получает код возврата
  • Поиск и удаление больших файлов, открытых, но удаленных
  • Уничтожение запущенного процесса на машине Ubuntu удаленно с Windows-машины, находящейся в локальной сети
  • Почему не останавливает сервер nginx убивать связанные с ним процессы?
  • Предотвратите запуск второго экземпляра моего программного обеспечения
  • Как узнать, какой процесс записывается в STDOUT?
  • Разрешить одному процессу доступ к файлу
  • Как узнать, кто подключен через vnc к моей машине?
  • Временный каталог на процесс
  • Как определить, какой процесс создает файл?
  • процесс, который может выполнять только root
  • Linux и Unix - лучшая ОС в мире.