inotifywait란? filesystem에서 발생하는 이벤트 감지나 로깅을 위한 명령어
즉, 특정 파일이나 디렉토리를 감시해서 요리조리 활용할 수 있는 로깅을 남겨주는 아주 유익한 명령어 !
설치
# sudo yum install inotify-tools
메뉴얼
기본 동작
기본 동작은 아래와 같이 inotfiywait 명령어와 함께 이벤트를 감지할 directory path를 설정한다
# inotifywait /home/ &
Setting up watches.
Watches established.
위 명령어는 event 발생 시 까지 계속 실행되는 명령어이기 때문에, background 실행을 위해 '&'을 붙인다.
현재 상태에서 아래와같이 /home/경로에 새로운 파일을 만들면 아래와 같이 CREATE log가 생기는것을 확인할 수 있다.
# touch asd
/home/ CREATE asd
# fg
bash: fg: job has terminated
[2]+ Done inotifywait /home/
-m flag
그리고 나서 background에서 실행중이던 inotifywait 명령어는 done이 되는데, 한번의 이벤트 발생 후 바로 프로세스가 종료되었다.
프로세스를 계속 유지하기 위해 -m flag를 붙여서 다시 실행한다.
# inotifywait /home/ -m &
[2] 147
# ls
/home/ OPEN,ISDIR
/home/ CLOSE_NOWRITE,CLOSE,ISDIR
asd
# cat asd
/home/ OPEN asd
/home/ CLOSE_NOWRITE,CLOSE asd
# cp asd asd_2
/home/ OPEN asd
/home/ CREATE asd_2
/home/ OPEN asd_2
/home/ CLOSE_WRITE,CLOSE asd_2
/home/ CLOSE_NOWRITE,CLOSE asd
# rm asd_2
/home/ DELETE asd_2
이후 위와같이 해당 directory에서 filesystem 관련 여러 명령어를 수행하면 다양한 로그를 확인할 수 있다.
더욱 다양한 log에 대해서는 inotifywait -h 명령어로 확인할 수 있다.
-e flag
또한 아래와 같이 특정 이벤트만 감지할 수 있도록 설정 가능하다.
# inotifywait /home/ -m -e create
# ls
# rm asd
# touch asd
/home/ CREATE asd
create log만 감지하도록 설정하니 asd file을 생성했을 때만 감지한다.
pipeline
pipeline을 이용하면 더욱 다양한 동작을 할 수 있는데, 특정 이벤트 발생시 이후에 어떻게 처리할것인지에 대한 동작 역시 설정 가능하다.
# inotifywait -m -e create asd /home/ | while read events ; do rm /home/asd; done &
# ls
# touch asd
# ls
위와같이 '|'(pipeline)이후에 read events로 반복문이 생기고 home/asd를 제거하도록 설정하니 touch asd 명령어로 asd file을 생성해도 곧바로 삭제 되는것을 확인할 수 있다.
'linux' 카테고리의 다른 글
도메인 주소 확인하는 방법 (nslookup, dig) (0) | 2022.08.11 |
---|---|
[linux]특정 packet만 지정하여 다른 경로(route)로 보내기 (0) | 2022.02.25 |
Linux 표준 출력 제어 (STDOUT, STDERR) (0) | 2021.07.24 |
리눅스 파일 첫번째/마지막줄 출력 (head / tail) (0) | 2021.07.23 |
iptables로 snat, dnat 설정하기 ! (0) | 2021.07.19 |