[리눅스] 이벤트 기반 모니터링
목차
- 소개
- inotify 이벤트
- 사용 예제
- 결론
1. 소개
이벤트 기반 모니터링은 파일 시스템의 변경을 실시간으로 감지하고 처리하는 기술을 말합니다. 리눅스 환경에서는 inotify API를 사용하여 파일 시스템 이벤트를 모니터링할 수 있습니다.
2. inotify 이벤트
inotify API는 다양한 파일 시스템 이벤트를 감지할 수 있습니다. 주요 이벤트에는 파일 생성, 파일 삭제, 파일 수정, 폴더 생성, 폴더 삭제 등이 있습니다. 이러한 이벤트는 디렉터리마다 따로 모니터링할 수 있으며, 실시간으로 이벤트를 감지하고 콜백 함수를 호출할 수 있습니다.
3. 사용 예제
다음은 inotify를 사용하여 특정 디렉터리의 변경을 모니터링하는 간단한 C언어 예제입니다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/inotify.h>
#define EVENT_SIZE (sizeof(struct inotify_event))
#define BUF_LEN (1024 * (EVENT_SIZE + 16))
int main() {
int fd, wd;
fd = inotify_init();
wd = inotify_add_watch(fd, "/path/to/directory", IN_MODIFY | IN_CREATE | IN_DELETE);
char buffer[BUF_LEN];
while (1) {
int length = read(fd, buffer, BUF_LEN);
if (length < 0) {
perror("read error");
exit(EXIT_FAILURE);
}
while (i < length) {
struct inotify_event *event = (struct inotify_event *) &buffer[i];
if (event->len) {
if (event->mask & IN_CREATE) {
printf("File created: %s\n", event->name);
} else if (event->mask & IN_DELETE) {
printf("File deleted: %s\n", event->name);
} else if (event->mask & IN_MODIFY) {
printf("File modified: %s\n", event->name);
}
}
i += EVENT_SIZE + event->len;
}
}
close(fd);
return 0;
}
4. 결론
리눅스에서 inotify를 통해 파일 시스템 이벤트를 모니터링할 수 있으며, 이를 활용하여 실시간으로 파일 시스템의 변경을 감지하고 서비스에 반영할 수 있습니다.