본문 바로가기

리눅스

[draft] inotifywait 명령어를 설치 및 사용하는 방법

728x90

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

inotifywait는 inotify-tools 패키지의 일부로 리눅스 파일 시스템에서 파일 또는 디렉터리의 변화를 실시간으로 감지할 수 있는 도구입니다.

 

inotify-tools란?

inotify-tools는 리눅스 시스템에서 파일 시스템 이벤트를 모니터링하는 강력한 도구입니다. 파일 생성, 삭제, 수정 등과 같은 파일 시스템의 변화를 감지하여 사용자 정의 스크립트를 실행하거나 다른 프로그램에 알릴 수 있습니다.

 

inotifywait의 사용 용도

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

inotify-tools(inotifywait) 패키지 설치

Debian 기반 시스템

sudo apt-get update
sudo apt-get install inotify-tools

RHEL 기반 시스템

sudo yum install inotify-tools

inotifywait 명령어의 기본 구문

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

inotifywait의 주요 옵션

  • -e, --event : 감지할 이벤트를 지정
  • -r, --recursive : 하위 디렉토리의 이벤트도 감지
  • --timeout : 이벤트가 발생하기까지 대기할 시간을 지정
  • -m, --monitor : 백그라운드에서 실행, Ctrl+C로 중지하기 전까지 실행을 멈추지 않음
  • --syslog : 이벤트를 syslog에 기록
  • --format : 출력 형식을 지정

주요 이벤트 옵션

  • create : 파일이나 디렉터리가 생성될 때
  • delete : 파일이나 디렉터리가 삭제될 때
  • modify : 파일이 수정될 때
  • access : 파일이 읽힐 때
  • move : 파일이나 디렉터리가 이동될 때
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