웹사이트 검색

fswatch - Linux에서 파일 및 디렉터리 변경 사항 모니터링


fswatch는 지정된 파일이나 디렉터리의 콘텐츠가 변경되거나 수정될 때 알림 경고를 받는 크로스 플랫폼 파일 변경 모니터입니다.

다음과 같은 다양한 운영 체제에서 네 가지 유형의 모니터를 실행합니다.

  • Apple OS X의 파일 시스템 이벤트 API를 기반으로 구축된 모니터입니다.
  • FreeBSD 4.1에 있는 알림 인터페이스인 kqueue 기반 모니터는 OS X를 포함한 많은 *BSD 시스템에서도 지원됩니다.
  • Solaris 커널과 그 스핀오프의 파일 이벤트 알림 API를 기반으로 하는 모니터입니다.
  • 앱에 대한 파일 시스템 수정 사항을 표시하는 커널 하위 시스템인 inotify 기반 모니터입니다.
  • 디렉터리 변경 사항을 기록하는 Windows API인 ReadDirectoryChangesW를 기반으로 하는 모니터입니다.
  • 파일 시스템의 상태를 정기적으로 확인하고 파일 수정 시간을 메모리에 유지하며 파일 시스템 변경 사항을 수동으로 결정하는 모니터입니다(stat를 사용할 수 있는 어디에서나 작동함).

fswatch의 특징

  • 여러 OS별 API 지원
  • 재귀적인 디렉터리 모니터링을 허용합니다.
  • 정규식 포함 및 제외를 사용하여 경로 필터링을 수행합니다.
  • 사용자 정의 가능한 레코드 형식 지원
  • 또한 주기적인 유휴 이벤트도 지원합니다.

Linux 시스템에 fswatch를 설치하는 방법

Linux에 fswatch를 설치하려면 특정 Linux 배포판에 적합한 다음 명령을 사용하세요.

sudo apt install fswatch         [On Debian, Ubuntu and Mint]
sudo yum install fswatch         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/fswatch  [On Gentoo Linux]
sudo apk add fswatch             [On Alpine Linux]
sudo pacman -S fswatch           [On Arch Linux]
sudo zypper install fswatch      [On OpenSUSE]    
sudo pkg install fswatch         [On FreeBSD]

fswatch를 기본 시스템 저장소에서 설치할 수 없는 경우 다음 설치 지침에 표시된 대로 소스에서 빌드할 수 있습니다.

먼저 다음 git 명령을 사용하여 최신 fswatch git 저장소를 복제하고 다음과 같이 설치합니다.

git clone https://github.com/emcrisostomo/fswatch.git
cd fswatch
./autogen.sh
./configure
make
sudo make install

중요: GNU GCC(C 및 C++ 컴파일러) 및 개발 도구(Debian/Ubuntu의 경우 빌드 필수)가 설치되어 있는지 확인하세요. 소스에서 fswatch를 컴파일하기 전에 시스템.

그렇지 않은 경우 해당 Linux 배포판에 다음 명령을 사용하여 설치하십시오.

sudo dnf group install 'Development Tools'    [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo apt-get install build-essential          [On Debian, Ubuntu and Mint]

Debian/Ubuntu 배포판에서는 fswatch 명령을 실행하는 동안 다음 오류가 발생할 수 있습니다.

fswatch: error while loading shared libraries: libfswatch.so.13: cannot open shared object file: No such file or directory

이 문제를 해결하려면 아래 명령을 실행해야 합니다. 이렇게 하면 fswatch 사용을 시작하기 전에 동적 라이브러리에 대한 링크와 캐시를 새로 고치는 데 도움이 됩니다.

sudo ldconfig

fswatch를 사용하여 Linux에서 파일 변경 사항을 모니터링하는 방법

fswatch를 실행하기 위한 일반적인 구문은 다음과 같습니다.

fswatch [option] [path]

Linux에서는 기본 inotify 모니터를 사용하는 것이 좋습니다. -M 또는 -를 사용하여 사용 가능한 모니터를 나열할 수 있습니다. 목록 모니터 옵션:

fswatch -M
fswatch --list-monitors

아래 명령을 사용하면 4초마다 표준 출력으로 이벤트가 전달되면서 현재 디렉터리(/home/tecmint)의 변경 사항을 볼 수 있습니다.

-l 또는 –-latency 옵션을 사용하면 대기 시간을 초 단위로 설정할 수 있으며 기본값은 1초입니다.

fswatch -l 4 . 

다음 명령은 5초마다 /var/log/auth.log 파일의 변경 사항을 모니터링합니다.

fswatch -l 5 /var/log/auth.log

-t 또는 --timestamp 옵션을 사용하면 모든 이벤트에 대한 타임스탬프가 인쇄됩니다. 시간을 UTC 형식으로 인쇄하려면 -를 사용하세요. u 또는 --utf-time 옵션. -f 또는 --format-time 형식 옵션을 사용하여 시간 형식을 지정할 수도 있습니다.

fswatch --timestamp /var/log/auth.log

다음으로, -x 또는 --event-flagsfswatch에 이벤트 경로와 함께 이벤트 플래그를 인쇄하도록 지시합니다. –event-field-seperator 옵션을 사용하면 특정 구분 기호를 사용하여 이벤트를 인쇄할 수 있습니다.

fswatch --events-flags ~ /var/log/auth.log

home 디렉토리 및 /var/log/auth.log 파일의 변경 사항을 나타내는 이벤트의 숫자 값을 인쇄하려면 -n을 사용하거나 --numeric 옵션은 아래와 같습니다:

fswatch --numeric ~ /var/log/auth.log 

자세한 사용 옵션과 정보를 보려면 fswatch 매뉴얼 페이지를 살펴보세요.

man fswatch

자세한 내용 및 사용법을 보려면 fswatch Github 저장소(https://github.com/emcrisostomo/fswatch)를 방문하세요.

이 게시물에서는 지정된 파일이나 디렉터리 계층의 내용이 수정될 때 Linux 사용자에게 알림을 보내는 데 도움이 되는 간단한 명령줄 유틸리티를 다루었습니다.

설치가 모두 잘 진행되기를 바랍니다. 그렇지 않은 경우 아래 피드백 양식을 통해 저희에게 연락해 주시기 바랍니다. 또한, 이전에 사용해 본 적이 있다면 fswatch 사용 경험에 대한 의견을 제공해 주실 수 있습니다.