어떤 프로세스가 특정 디렉토리에 작성되는지 확인


19

/ some / dir 디렉토리가 있는데 항상 새 파일이 나타납니다. 해당 프로세스를 생성하는 프로세스를 어떻게 알 수 있습니까?

답변:


18

시도하십시오 lsof +r2 | grep '/some/dir'. 그러면 / some / dir에 액세스 하고 2 초마다 새로 고치는 프로세스가 표시됩니다 .


2
Thaks, 이것은 열려있는 파일의 전체 목록을 먼저 생성 한 다음 / some / dir로 필터링하기 때문에 내가 필요한 것에 매우 가깝습니다. 그러나 프로세스가 파일을 매우 빠르게 생성하고 열어 두지 않으면 위의 내용 중 일부가 누락 될 수 있음을 이해합니다. 이 경우 유일한 옵션은 감사 서브 시스템이라고 생각합니다.
homer5439

당신의 가정은 옳습니다. 또 다른 아이디어는 inotifywait를 사용하는 것입니다. linux.die.net/man/1/inotifywait
weeheavy

고마워, 전에 inotify 도구를 고려했지만 파일 시스템 수준에서 순수하게 작동하고 누가 무엇을했는지에 대한 정보를 제공 할 수없는 것으로 나타났습니다.
homer5439

18

커널 audit서브 시스템 사용

auditctl -w /some/dir/ -p war -k whatsgoingon

그러면 / some / dir /에서 무언가를 기다리는 후크가 설정됩니다.

그런 다음 auditd데몬이 실행 중인지 확인하십시오 . 그런 다음 파일이 나타날 때까지 기다렸다가 /var/log/auditd.log시스템의 어느 곳에서나 파일이 어디에서 읽히고 발생했는지와 어떤 프로세스로 읽었는지 읽습니다.


감사합니다. 기본적으로 어디에도없는 감사 도구가 설치되어 있어야하지만 정확히 그렇게하는 것 같습니다. 그러나 정보가 필요한 경우 언제든지 설치할 수 있습니다.
homer5439

이를 보는 사람들에게 참고할 사항 : 최상위 디렉토리 (커널에서 금지)에 시계를 배치 할 수 없음
Tony Sepia

1
정말 효율적인 방법입니다! 고마워 !!! BTW, 완료되면 모든 후크를 제거하여 감사 로그를 영원히 작성하지 않도록 할 수 있습니다 auditctl -D. auditctl -l모든 후크를 나열 하는 데 사용할 수 있습니다 .
로버트

0

lsof 도울 수있다:

# lsof -r1 /some/dir/*

1
감사. 위의 명령이 기존 파일에 액세스하는 사람 만 알려주고 새로 만든 파일에 대해서는 아무 것도 표시하지 않는 것이 맞습니까? / some / dir / *는 명령이 호출 될 때 존재하는 파일 목록으로 확장된다는 것을 이해합니다.
homer5439
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.