Intereting Posts
Где я могу найти хороший шаблон bashrc? SELinux не регистрируется нигде Пропустить версию пакета Debian: запустите Xvfb с помощью сценария systemd и отправьте на задний план Установка переменных из оболочки: как их использовать в скрипте? переименовывать случайные файлы на USB-устройстве xdg-mime не ведет себя Проверка того, что пользовательские dotfiles не являются групповыми или общедоступными Возобновление Linux из спящего режима на ThinkPad X220 происходит с черным экраном или перезагрузкой Установить файлы разработки локально для создания системы без доступа root? Перенос операционной системы с виртуальной машины в физическую систему Почему «интерактивный режим» не корректно отображает мои кодированные имена UTF-8? Заголовки ядра для инструментов VMware Почему сначала установить переменную, а затем экспортировать ее вместо настройки и экспорта в одной команде? как обновить прошивку ноутбука на Linux

Как определить, какой процесс создает файл?

Этот путь к файлу, как я могу определить, какой процесс его создает (и / или читает / записывает на него)?

Команда lsof (уже упомянутая в нескольких ответах) сообщит вам, какой процесс имеет файл, открытый во время его запуска. lsof доступен практически для каждого варианта unix.

 lsof /path/to/file 

lsof не расскажет вам о файле, который был открыт два микросекунды назад и закрыт один микросекунд назад. Если вам нужно посмотреть конкретный файл и реагировать на его доступ, вам понадобятся разные инструменты.

Если вы планируете немного заранее, вы можете поместить файл в файловую систему LoggedFS . LoggedFS представляет собой файловую систему с файлами FUSE, которая регистрирует все обращения к файлам в иерархии. Параметры регистрации очень настраиваются. FUSE доступен во всех крупных организациях . Вы захотите зарегистрировать обращения к директории, в которой создается файл. Начните с предоставленного образца файла конфигурации и настройте его в соответствии с этим руководством .

 loggedfs -l /path/to/log_file -c /path/to/config.xml /path/to/directory tail -f /path/to/log_file 

Многие организации предлагают другие средства мониторинга. В Linux вы можете использовать относительно новую подсистему аудита . Об этом мало литературы (но больше, чем о loggedfs); вы можете начать с этого руководства или нескольких примеров или просто с помощью страницы auditctl man . Здесь должно быть достаточно, чтобы убедиться, что демон запущен, а затем запустите auditctl :

 auditctl -w /path/to/file 

(Я думаю, что более старым системам нужен auditctl -a exit,always -w /path/to/file ) и смотреть журналы в /var/log/audit/audit.log .

Ну, вы можете многократно запускать lsof , и если вам повезет, преступник будет держать файл открытым достаточно долго, чтобы он показывал. Т.е .:

 $ lsof -r1 /path/to/file 

или для многих файлов

 $ lsof -r1 /path/to/folder/* 

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

Если это не работает, то есть файл открывается и закрывается очень быстро, что часто бывает так, я считаю, вам нужно искать более сложные инструменты. Может быть, loggedfs может быть чем-то?

Hackland
Если один раз в секунду lsof не будет работать, вы можете, конечно, взломать цикл while, который работает lsof как можно быстрее. Подобно:

 $ while true; do lsof /paht/to/file; done; 

Не красиво, но кто знает, может просто сделать это.

 lsof |grep (filename) 

Это покажет вам процесс, который в настоящее время использует файл.

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

 $ lsof /tmp/file COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME less 4737 wena 4r REG 8,6 90700 1643536 /tmp/file 

Он говорит, что процесс с less – это сохранение файла « / tmp / file » открытым.

ПРИМЕЧАНИЕ . Как ни странно, это не работает, если я использую geany или nano . Я с нетерпением жду лучших предложений.

Вы можете использовать ls и grep чтобы узнать файлы, используемые хром

 $ ls -l /proc/*/fd | grep "chrome" lrwx------ 1 ba abc 64 Jul 16 22:19 104 -> /home/abc/.config/google-chrome/Default/Cookies lr-x------ 1 abc abc 64 Jul 16 22:19 113 -> /opt/google/chrome/nacl_irt_x86_64.nexe lrwx------ 1 abc abc 64 Jul 16 22:19 121 -> /home/abc/.cache/google-chrome/Default/Cache/data_0 lrwx------ 1 abc abc 64 Jul 16 22:19 122 -> /home/abc/.cache/google-chrome/Default/Cache/data_1 lrwx------ 1 abc abc 64 Jul 16 22:19 123 -> /home/abc/.cache/google-chrome/Default/Cache/data_2 lr-x------ 1 abc abc 64 Jul 16 22:19 125 -> /home/abc/.config/google-chrome/Dictionaries/en-US-3-0.bdic 

Другой способ – использовать lsof и grep

 $ lsof | grep "chrome" chrome 2204 abc cwd DIR 8,5 4096 1441794 /home/abc chrome 2204 abc rtd DIR 8,5 4096 2 / chrome 2204 abc txt REG 8,5 87345336 5111885 /opt/google/chrome/chrome chrome 2204 abc mem REG 8,5 4202496 1443927 /home/abc/.cache/google-chrome/Default/Media Cache/data_3 chrome 2204 abc mem REG 8,5 1056768 1443926 /home/abc/.cache/google-chrome/Default/Media Cache/data_2 chrome 2204 abc mem REG 8,5 270336 1443925 /home/abc/.cache/google-chrome/Default/Media Cache/data_1 chrome 2204 abc mem REG 8,5 45056 1443924 /home/abc/.cache/google-chrome/Default/Media Cache/data_0