캠핑과 개발

리눅스 시스템에서 파일의 생성, 삭제, 이동 등을 감시하여 어떤 작업을 처리할때 유용한다.

 

1. 설치

먼저 설치되어 있지 않다면 다음 명령어로 설치한다.

yum install inotify-tools

 

2. 사용법

#!/bin/sh

MONITOR_PATH=/home/test

inotifywait -m -e create -r "$MONITOR_PATH" |
while read dirname eventlist filename
do
  echo ${dirname} ${filename}
done

 

3. Options

-h|--help

  도움말을 보여줍니다.

 

@<file>

감시에서 지정된 파일을 제외합니다.

 

--exclude <pattern>

   확장 정규식 <pattern>과 일치하는 파일의 모든 이벤트를 제외합니다.

 

--excludei <pattern>

   --exclude와 같지만 대소 문자를 구분하지 않습니다.

 

-m|--monitor

     이벤트를 영원히 경청하십시오. 이 옵션이 없으면 inotifywait는 하나의 이벤트가 수신 된 후 종료됩니다.

 

-d|--daemon

    --outfile로 지정된 파일에 이벤트 로깅 이벤트를 백그라운드에서 실행한다는 점을 제외하면 --monitor와 동일합니다. --syslog를 의미합니다.

 

-r|--recursive

디렉토리를 재귀 적으로 감시합니다. 

 

--fromfile <file> 

  <file> 또는 stdin의 경우`- '에서 감시 할 파일을 읽습니다.

 

-o|--outfile <file>

stdout이 아닌 <file>에 이벤트를 인쇄하십시오.

 

-s|--syslog

stderr 대신 syslog에 오류를 보냅니다.

 

-q|--quiet

더 적게 인쇄합니다 (인쇄 이벤트 만).

 

-qq

아무것도 인쇄하지 않습니다 (이벤트도 아님).

 

--format <fmt>

지정된 printf와 유사한 형식 문자열을 사용하여 인쇄합니다. 자세한 내용은 man 페이지를 참조하십시오.

 

--timefmt <fmt>

--format 문자열에서 % T와 함께 사용하기위한 strftime 호환 형식 문자열입니다.

 

-c|--csv

CSV 형식으로 이벤트를 인쇄합니다.

 

-t|--timeout <seconds>

단일 이벤트를 수신 할 때 <seconds> 초 동안 이벤트를 기다린 후 시간이 초과됩니다. <seconds>가 0이면 inotifywait가 시간 초과되지 않습니다.

 

-e|--event <event1> [ -e|--event <event2> ... ]

특정 이벤트를 수신합니다. 생략하면 모든 이벤트가 수신됩니다.

 

4. Events

이벤트 설명
access 파일 또는 디렉토리 내용을 읽었습니다
modify 파일 또는 디렉토리 내용이 기록되었습니다.
attrib 파일 또는 디렉토리 내용이 기록되었습니다.
close_write 쓰기 가능 모드로 열린 후 파일 또는 디렉토리가 닫힘
close_nowrite 읽기 전용 모드로 열린 후 파일 또는 디렉토리가 닫힘
close 읽기 / 쓰기 모드에 관계없이 파일 또는 디렉터리가 닫힘
open 열린 파일 또는 디렉토리
moved_to 감시 된 디렉토리로 이동 된 파일 또는 디렉토리
moved_from
감시 된 디렉토리에서 이동 된 파일 또는 디렉토리
move
감시 된 디렉토리로 (부터) 이동 된 파일 또는 디렉토리
create
감시 된 디렉토리 내에 생성 된 파일 또는 디렉토리
delete
감시 디렉토리 내에서 삭제 된 파일 또는 디렉토리
delete_self
파일 또는 디렉토리가 삭제되었습니다.
unmount
마운트 해제 된 파일 또는 디렉토리를 포함하는 파일 시스템

5. 종료 코드

0 - 시청을 요청한 이벤트가 수신되었습니다.
1 - 시청을 요청하지 않은 이벤트가 수신되었습니다. (일반적으로 delete_self 또는 마운트 해제) 또는 일부 오류가 발생했습니다.
2 ---timeout 옵션이 제공되었으며 이벤트가 발생하지 않았습니다. 지정된 시간 간격으로.