Watchman - 변경 사항을 감시하는 파일 및 디렉토리 도구
Watchman은 파일을 감시하고 변경 시 기록하거나 작업을 수행하는 오픈 소스 및 크로스 플랫폼 파일 감시 서비스입니다. Facebook에서 개발했으며 Linux, OS X, FreeBSD 및 Solaris에서 실행됩니다. 클라이언트-서버 모델에서 실행되며 Linux 커널의 inotify 유틸리티를 사용하여 보다 강력한 알림을 제공합니다.
Watchman의 유용한 개념
- 하나 이상의 디렉터리 트리를 반복적으로 감시합니다.
- 감시된 각 디렉토리를 루트라고 합니다.
- 명령줄이나 JSON 형식으로 작성된 구성 파일을 통해 구성할 수 있습니다.
- 로그 파일의 변경 사항을 기록합니다.
- 루트에서 발생하는 파일 변경 사항에 대한 구독을 지원합니다.
- 마지막으로 확인한 이후의 파일 변경 사항이나 트리의 현재 상태에 대해 루트를 쿼리할 수 있습니다.
- 전체 프로젝트를 볼 수 있습니다.
이 글에서는 watchman을 설치하고 사용하여 Linux에서 파일을 감시(모니터링)하고 변경 사항을 기록하는 방법을 설명합니다. 또한 디렉터리를 감시하고 디렉터리가 변경될 때 스크립트를 호출하는 방법을 간략하게 설명합니다.
Linux에 Watchman 파일 감시 서비스 설치
소스에서 watchman 서비스를 설치하므로 먼저 libssl-dev, autoconf, automake automake 필수 종속성을 설치합니다. Linux 배포판에서 다음 명령을 사용하는 Strong>libtool, setuptools, python-devel 및 libfolly.
----------- 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으로 파일 및 디렉터리 보기
Watchman은 (1) 데몬이 백그라운드에서 실행되는 동안 명령줄을 통해 또는 (2) JSON 형식으로 작성된 구성 파일을 통해 구성할 수 있습니다.
디렉터리(예: ~/bin
)의 변경 사항을 보려면 다음 명령을 실행하세요.
watchman watch ~/bin/
다음 명령은 /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
루트에 대한 트리거 목록을 보려면 다음 명령을 실행합니다(~/bin
를 루트
이름으로 교체).
watchman trigger-list ~/bin
위 구성에 따라 ~/bin
디렉터리가 변경될 때마다 그 안에 file.2019-03-13.23:14:17.txt
같은 파일이 생성됩니다. ls 명령을 사용하여 볼 수 있습니다.
ls
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)를 참조하세요.
다음 관련 기사를 읽고 싶을 수도 있습니다.
- Swatchdog – Linux에서 실시간으로 간단한 로그 파일 감시자
- 실시간으로 로그 파일을 보거나 모니터링하는 4가지 방법
- fswatch – Linux에서 파일 및 디렉터리 변경 사항을 모니터링합니다.
- Pyintify – Linux에서 실시간으로 파일 시스템 변경 사항 모니터링
- Inav – Linux에서 실시간으로 Apache 로그 보기
Watchman은 파일이 변경되면 감시하고 기록하거나 작업을 트리거하는 오픈 소스 파일 감시 서비스입니다. 아래 피드백 양식을 사용하여 질문을 하거나 의견을 공유해 주세요.