Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

Watchman:효율적인 파일 및 디렉토리 변경 모니터링 도구

파수꾼 파일을 감시하고 변경 시 작업을 기록하거나 수행하는 오픈 소스 및 크로스 플랫폼 파일 감시 서비스입니다. Facebook에서 개발했습니다. Linux, OS X, FreeBSD 및 Solaris에서 실행됩니다. 클라이언트-서버 모델에서 실행되며 Linux 커널의 inotify 유틸리티를 사용하여 더욱 강력한 알림을 제공합니다.

Watchman의 유용한 개념

  • 하나 이상의 디렉토리 트리를 반복적으로 감시합니다.
  • 감시된 각 디렉토리를 루트라고 합니다.
  • 명령줄이나 JSON 형식으로 작성된 구성 파일을 통해 구성할 수 있습니다.
  • 로그 파일의 변경 사항을 기록합니다.
  • 루트에서 발생하는 파일 변경 사항에 대한 구독을 지원합니다.
  • 마지막으로 확인한 이후의 파일 변경 사항이나 트리의 현재 상태를 루트에서 쿼리할 수 있습니다.
  • 전체 프로젝트를 볼 수 있습니다.

이번 글에서는 watchman 설치 및 사용법에 대해 설명하겠습니다. 파일을 감시(모니터링)하고 Linux에서 파일이 변경될 때 기록합니다. 또한 디렉터리를 감시하고 디렉터리가 변경될 때 스크립트를 호출하는 방법을 간략하게 설명하겠습니다.

Linux에 Watchman 파일 감시 서비스 설치

파수꾼을 설치하겠습니다. 소스에서 서비스를 제공하므로 먼저 이러한 필수 종속성 libssl-dev를 설치하세요. , autoconf , 자동 제작 libtool , 설정 도구 , python-devel 그리고 libfolly Linux 배포판에서 다음 명령을 사용하세요.

----------- On Debian/Ubuntu ----------- 
$ sudo apt install autoconf automake build-essential python-setuptools python-dev libssl-dev libtool 
----------- On RHEL/CentOS -----------
# yum install autoconf automake python-setuptools python-devel openssl-devel libssl-devel libtool 
# yum groupinstall 'Development Tools' 
----------- On Fedora -----------
$ sudo dnf install autoconf automake python-setuptools openssl-devel libssl-devel libtool 
$ sudo dnf groupinstall 'Development Tools' 

필수 종속성이 설치되면 github 저장소를 다운로드하여 watchman 구축을 시작하고 로컬 저장소로 이동한 후 다음 명령을 사용하여 이를 구성, 빌드 및 설치할 수 있습니다.

$ git clone https://github.com/facebook/watchman.git
$ cd watchman
$ git checkout v4.9.0 
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

Linux에서 Watchman으로 파일 및 디렉토리 보기

파수꾼 (1) 데몬이 백그라운드에서 실행되는 동안 명령줄을 통해 또는 (2) JSON 형식으로 작성된 구성 파일을 통해 구성할 수 있습니다.

디렉토리를 보려면(예:~/bin ) 변경하려면 다음 명령을 실행하세요.

$ watchman watch ~/bin/
Watchman:효율적인 파일 및 디렉토리 변경 모니터링 도구 Linux에서 디렉터리 보기

다음 명령은 state라는 구성 파일을 작성합니다. /usr/local/var/run/watchman/-state/ 아래 , JSON 형식 및 log라는 로그 파일 같은 위치에 있습니다.

show와 같이 cat 명령을 사용하여 두 파일을 볼 수 있습니다.

$ cat /usr/local/var/run/watchman/aaronkilik-state/state
$ cat /usr/local/var/run/watchman/aaronkilik-state/log

디렉터리의 변경 사항을 감시할 때 트리거할 작업을 정의할 수도 있습니다. 예를 들어 다음 명령에서는 'test-trigger '는 트리거 이름이고 ~bin/pav.sh입니다. 모니터링 중인 디렉터리에서 변경 사항이 감지되면 호출되는 스크립트입니다.

테스트 목적으로 pav.sh 스크립트는 단순히 타임스탬프가 있는 파일을 생성합니다. (예:file.$time.txt ) 스크립트가 저장된 동일한 디렉토리 내에서.

time=`date +%Y-%m-%d.%H:%M:%S`
touch file.$time.txt

파일을 저장하고 표시된 대로 스크립트를 실행 가능하게 만듭니다.

$ chmod +x ~/bin/pav.sh

트리거를 실행하려면 다음 명령을 실행하세요.

$ watchman -- trigger ~/bin 'test-trigger' -- ~/bin/pav.sh
Watchman:효율적인 파일 및 디렉토리 변경 모니터링 도구 디렉터리에서 트리거 만들기

워치맨을 처형할 때 감시 목록에 추가된 디렉토리를 감시하고 보려면 다음 명령을 실행하세요.

$ watchman watch-list 
Watchman:효율적인 파일 및 디렉토리 변경 모니터링 도구 관심 목록 보기

루트에 대한 트리거 목록을 보려면 , 다음 명령을 실행합니다(~/bin 교체). root로 이름).

$ watchman trigger-list ~/bin
Watchman:효율적인 파일 및 디렉토리 변경 모니터링 도구 루트에 대한 트리거 목록 표시

위의 구성을 바탕으로 ~/bin가 나올 때마다 디렉토리 변경, file.2019-03-13.23:14:17.txt와 같은 파일 내부에 생성되며 ls 명령을 사용하여 볼 수 있습니다.

$ ls
Watchman:효율적인 파일 및 디렉토리 변경 모니터링 도구 Watchman 구성 테스트

Linux에서 Watchman 서비스 제거

watchman을 제거하려는 경우 , 소스 디렉터리로 이동하고 다음 명령을 실행하세요:

$ sudo make uninstall
$ cd '/usr/local/bin' && rm -f watchman 
$ cd '/usr/local/share/doc/watchman-4.9.0 ' && rm -f README.markdown 

자세한 내용은 Watchman Github 저장소(https://github.com/facebook/watchman)를 방문하세요.

다음 관련 기사를 읽어보실 수도 있습니다.

  1. Swatchdog – Linux에서 실시간으로 실행되는 간단한 로그 파일 감시자
  2. 로그 파일을 실시간으로 관찰하거나 모니터링하는 4가지 방법
  3. fswatch – Linux에서 파일 및 디렉터리 변경 사항을 모니터링합니다
  4. Pyintify – Linux에서 실시간으로 파일 시스템 변경 사항을 모니터링
  5. Inav – Linux에서 실시간으로 Apache 로그 보기

파수꾼 파일을 감시하고 기록하거나 변경 시 작업을 트리거하는 오픈 소스 파일 감시 서비스입니다. 아래 피드백 양식을 사용하여 질문을 하거나 의견을 공유해 주세요.