Я пытаюсь найти надежный способ узнать, какой процесс на моем компьютере изменяет файл конфигурации (/etc/hosts
чтобы быть конкретным).
Я знаю, что могу использовать lsof /etc/hosts
чтобы узнать, какие процессы в данный момент открывают файл, но это не помогает, потому что процесс, очевидно, открывает файл, записывает в него, а затем снова закрывает.
Я также посмотрел на lsof
параметр повторения (-r), но кажется, что он выполняется только раз в секунду, что, вероятно, никогда не будет фиксировать текущую запись.
Я знаю пару инструментов для отслеживания изменений в файловой системе, но в данном случае я хочу знать, какой процесс отвечает за это, а это значит, что нужно уловить его на месте.
Вы можете использовать аудит, чтобы найти это. Если он еще не доступен, установите и включите аудит для вашего дистрибутива.
установить часы аудита на / 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 Oct 12 09:34:07 2011 type=PATH
> msg=audit(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=audit(1318408447.180:870):
> cwd="/home/iain" type=SYSCALL msg=audit(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:system_r:unconfined_t:s0
> key="hosts-file"
В этом случае я использовал команду touch, чтобы изменить временную метку файлов, это 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
затем вы можете заставить его запускать скрипт, чтобы какие-то диагнозы