본문 바로가기

리눅스

inotify-tools(inotifywait)를 설치하고 사용하는 방법

728x90

inotify-tools(inotifywait)를 설치하고 사용하는 방법

inotifywait는 리눅스에서 파일의 생성, 삭제, 수정, 이름 변경 등의 이벤트를 감시하는 유틸리티입니다. inotifywait는 inotify라는 리눅스 커널 API를 사용하여 파일 시스템의 변경 사항을 감지합니다.

 

inotifywait는 다음과 같은 용도로 사용할 수 있습니다.

 

  • 특정 파일이나 디렉토리의 변경 사항을 모니터링하여 자동화된 작업을 수행
  • 실시간으로 파일 시스템의 변경 사항을 확인
  • 백업이나 복구를 위한 파일 변경 사항을 추적

inotifywait는 다음과 같은 옵션을 지원합니다.

 

  • --event: 감지할 이벤트를 지정
  • --recursive: 하위 디렉토리의 이벤트도 감지
  • --timeout: 이벤트가 발생하기까지 대기할 시간을 지정
  • --monitor: 백그라운드에서 실행
  • --syslog: 이벤트를 syslog에 기록

inotify-tools(inotifywait) 설치

  • Ubuntu 및 Debian 기반 시스템
sudo apt-get update
sudo apt-get install inotify-tools
  • CentOS 및 RHEL 기반 시스템
sudo yum install inotify-tools

inotifywait 명령어의 기본 구문

inotifywait [옵션] [파일 또는 디렉토리]

옵션

  • inotifywait 명령어는 다양한 옵션을 지원하여 감시 동작을 세부적으로 제어할 수 있습니다.
    • -e 또는 --event: 감시할 이벤트 유형을 지정합니다. 여러 이벤트를 지정하려면 쉼표로 구분합니다. 예를 들어, -e create,modify는 파일 생성 및 수정 이벤트를 감시합니다.
    • -m 또는 --monitor: 계속해서 감시하며, Ctrl+C로 중지하기 전까지 실행을 멈추지 않습니다.
    • -r, --recursive: 디렉토리를 재귀적으로 감시합니다.
    • --format: 출력 형식을 지정합니다.
728x90

사용 예시

/tmp/myfile 파일의 변경 사항(생성, 수정, 삭제)을 감시

inotifywait -e create,modify,delete /tmp/myfile

이 명령이 실행되면 /tmp/myfile 파일에 다음과 같은 이벤트가 발생하면 다음과 같은 출력이 표시됩니다.

[2023-09-22 11:00:00] myfile: create
[2023-09-22 11:00:01] myfile: modify
[2023-09-22 11:00:02] myfile: delete

/tmp/myfile 파일에 대해 create, modify, delete 이벤트를 감시하는 스크립트를 작성

  • /tmp/myfile 파일 생성
touch /tmp/myfile
  • 스크립트 작성
vim myfile_inotifywait.sh
#!/bin/bash

# 감시할 파일 경로
file_path="/tmp/myfile"

# inotifywait를 사용하여 파일 이벤트 감시
inotifywait -m -e create,modify,delete --format "%e %w" "$file_path" |
while read -r events file
do
    case $events in
        CREATE)
            echo "파일 $file 가 생성되었습니다."
            ;;
        MODIFY)
            echo "파일 $file 가 수정되었습니다."
            ;;
        DELETE)
            echo "파일 $file 가 삭제되었습니다."
            ;;
        *)
            echo "알 수 없는 이벤트: $events"
            ;;
    esac
done
chmod +x myfile_inotifywait.sh
./myfile_inotifywait.sh
  • /tmp/myfile 파일 수정
echo "AAA" > /tmp/myfile
echo "BBB" > /tmp/myfile
  • 로그 확인
$ ./myfile_inotifywait.sh
Setting up watches.
Watches established.

파일 /tmp/myfile 가 수정되었습니다.
파일 /tmp/myfile 가 수정되었습니다.

파일 /tmp/myfile 가 수정되었습니다.
파일 /tmp/myfile 가 수정되었습니다.

 

inotifywait는 리눅스 시스템에서 파일 시스템의 변경 사항을 감시하는 데 유용한 도구입니다. 다양한 용도로 사용할 수 있으므로 리눅스 시스템 관리자라면 익혀두면 유용합니다.

 

728x90