어떤 프로세스가 파일을 변경하는지 확인 사용할 수 있지만

내 컴퓨터에서 어떤 프로세스가 구성 파일을 변경하는지 확인하는 안정적인 방법을 찾으려고합니다 /etc/hosts.

lsof /etc/hosts현재 파일을 열어 놓은 프로세스를 찾는 데 사용할 수 있지만 프로세스가 파일을 열어서 쓰고 나서 다시 닫아서 도움이되지 않습니다.

나는 또한 lsof반복 옵션 (-r)을 보았지만 1 초에 한 번만 빠르게 진행되는 것처럼 보이며 진행중인 쓰기를 캡처하지 못할 것입니다.

파일 시스템의 변경 사항을 모니터링하는 몇 가지 도구를 알고 있지만이 경우 책임이있는 프로세스를 알고 싶습니다. 이는 프로세스에서 처리하는 것을 의미합니다.



답변

감사를 사용하여이를 찾을 수 있습니다. 아직 사용할 수없는 경우 배포판에 대한 감사를 설치하고 활성화하십시오.

/ 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.

호스트 파일이 변경 될 때까지 기다린 다음 ausearch를 사용하여 기록 된 내용을 확인하십시오.

/sbin/ausearch -f /etc/hosts | more

당신은 출력의 질량을 얻을 것이다


time-> 수 10 월 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) : 아치 = c000003e syscall = 2 성공 = 예 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”


이 경우 터치 명령을 사용하여 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

그런 다음 스크립트를 트리거하여 일종의 진단을 할 수 있습니다.


답변