Узнайте, какой процесс изменяет файл
Я пытаюсь найти надежный способ узнать, какой процесс на моей машине меняет файл конфигурации (/etc/hosts
чтобы быть конкретным).
Я знаю, что могу использовать lsof /etc/hosts
выяснить, какие процессы в данный момент открывают файл, но это не помогает, потому что процесс, очевидно, открывает файл, записывает в него, а затем закрывает его снова.
Я также посмотрел на lsof
Это опция повтора (-r), но, похоже, она работает только раз в секунду, что, вероятно, никогда не отразит текущую запись.
Я знаю пару инструментов для отслеживания изменений в файловой системе, но в этом случае я хочу знать, какой процесс ответственен, что означает, что нужно поймать его в действии.
4 ответа
Вы можете использовать одитинг, чтобы найти это. Если он еще не доступен, установите и включите аудит для своего дистрибутива.
установить наблюдение за аудитом в / etc / hosts
/sbin/auditctl -w /etc/hosts -p war -k hosts-file
-w watch /etc/hosts
-p warx watch for write, attribute change, execute or read events
-k hosts-file is a search key.
Подождите, пока файл hosts не изменится, а затем используйте ausearch для просмотра того, что записано
/sbin/ausearch -f /etc/hosts | more
Вы получите массу продукции, например,
time->Wed 12 окт. 09:34:07 2011 тип =PATH msg= аудит (1318408447.180:870): item=0 name="/etc/hosts" inode=2211062 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 type=CWD msg= аудит (1318408447.180:870): cwd="/home/iain" тип =SYSCALL msg= аудит (1318408447.180: 870): arch = c000003e syscall = 2 success = yes exit = 0 a0 = 7fff73641c4f a1 = 941 a2 = 1b6 a3 = 3e7075310c items = 1 ppid = 7259 pid = 7294 au id = 1001 uid = 0 gid = 0 euid = 0 suid = 0 fsuid = 0 egid = 0 sgid = 0 fsgid = 0 tty = pts0 ses = 123 comm = "touch" exe = "/ bin / touch" subj = user_u: не определено_t:s0 key="hosts-file"
В этом случае я использовал команду touch, чтобы изменить файлы. Timstamp: pid - 7294, ppid - 7259 (моя оболочка).
Вы также можете использовать inotify-tools:
inotifywait -mq -e open -e modify /etc/hosts
После долгих поисков я нашел решение, просто используйте эту команду: sudo fs_usage | grep [path_to_file]
Вероятно , лучше использовать что-то вроде Incron тогда
http://inotify.aiken.cz/?section=incron&page=about&lang=en
затем вы можете получить его, чтобы вызвать сценарий так что-то вроде диагнозов