특정 순간에 파일을 생성하는 모든 애플리케이션에서 파일(특히 로그 파일)을 추적해야 합니다. 이러한 파일의 이름은 임의로 지정할 수 있습니다( log
파일 이름이나 경로에 반드시 포함될 필요는 없음).
나는 fswatch -r /
다음과 같은 일을 처리하기 위해 grep을 사용할 것이라고 생각합니다.
fswatch -r / | egrep --line-buffered -iv "//run|//sys"
그러나 나는 그것이 내가 언급한 목표에 대해 눈에 띄는 결과를 제공하지 않는다는 것을 발견했습니다... 단지 다음을 본 것뿐입니다:
...
inotify_add_watch: No space left on device
inotify_add_watch: No space left on device
inotify_add_watch: No space left on device
/
/
/
/
^C
$
이 경우에는 어떻게 작동합니까? 저는 실제로 그 일을 하고 있는 것이 아니기 fswatch
때문에 언제든지 그러한 파일을 수정할 수 있는 방법을 찾을 수 있는 아이디어나 솔루션에 열려 있습니다.
콘솔에 나타나는 것을 보면 꽤 빨리 찾을 수 있기 때문에 "분출"에 대해서는 별로 관심이 없지만 해킹할 수 있도록 FS에서 일어나는 모든 일을 알고 싶을 뿐입니다. 중요한 일이 아닙니다.
답변1
을 설치하고 구성합니다 incrontab
.
incron은 파일 시스템 이벤트를 모니터링하고 시스템 및 사용자 테이블에 정의된 명령을 실행하는 데몬 프로세스입니다.
파일을 편집하려면 아래에 사용자를 추가하세요 /etc/incron.allow
(사용자 허용 incrontab
) incrontab -e
.
용법:
path mask command
path
= 파일 경로
mask
= 참조man inotify | less +/'inotify events'
command
= 실행할 명령, 귀하의 경우 결과를 필터링하여 syslog
파일이 수정된 정확한 시간을 알 수 있는 메시지일 수도 있습니다.
e,g: a 를 모니터링하려면 다음을 file
사용하세요.
/path/to/file IN_MODIFY "message: your file is accessed"
수정을 통해 파일에 액세스하면 아래 메시지를 찾 /var/log/syslog
거나 다음을 입력 합니다.jounalctl -xe
출력 예:
# grep "message: your" /var/log/syslog
Nov 22 10:05:04 hostname incrond[2263]: (USER) CMD ("message: your file is accessed")
편집하다
특정 폴더 아래의 모든 파일을 모니터링할 수 있습니다. 이것은 다음을 수행할 수 있는 샘플 메시지입니다. 업데이트 중인 모든 파일 나열:
path/to/folder IN_MODIFY echo "$$ $@ $# $% $&"
명령에는 다음과 같은 와일드카드 문자가 포함될 수 있습니다.
$$ - a dollar sign
$@ - the watched filesystem path (see above example)
$# - the event-related file name
$% - the event flags (textually)
$& - the event flags (numerically)