728x90
✅ 쉘스크립트로 실시간 파일 감시 시스템 구성하기
안녕하세요, 띵앤띵입니다! 😊
오늘은 리눅스에서 쉘 스크립트를 이용해 특정 디렉토리를 실시간 감시하고, 파일이 생성되면 자동으로 원하는 명령어를 실행하는 방법을 소개할게요.
요즘 같이 자동화가 중요한 시대에, 손수 감시하지 않고도 스크립트 하나로 편리하게 처리할 수 있다면 정말 꿀이겠죠? 🍯
🔧 사전 준비: SSH 접속 후 inotify-tools 설치
먼저, 감시를 위한 필수 패키지인 inotify-tools를 설치해야 해요.
SSH 접속 후 아래 명령어를 입력해주세요.
sudo apt update
sudo apt install inotify-tools
inotifywait 명령어를 사용할 수 있게 됩니다. 👍
📝 감시용 쉘 스크립트 예제
아래는 실시간 감시를 위한 기본 스크립트입니다.
(※ 실제 사용시 디렉토리 경로는 {WATCH_DIR}, 명령어는 {DETECTION_CMD}로 치환하세요)
#!/bin/bash
WATCH_DIR="/root/keti_fall_down_detection_v4/data"
DETECTION_CMD="docker exec fall_down_detection python3 main.pyc /root/app/data /root/app/output"
echo "[시작] $WATCH_DIR 디렉토리 감시 중... (jpg/jpeg && 0바이트 초과 파일만)"
inotifywait -m -r -e close_write,move --format '%w%f' "$WATCH_DIR" |
while read FILE
do
if [[ "$FILE" == *.jpg || "$FILE" == *.jpeg ]]; then
FILE_SIZE=$(stat -c%s "$FILE" 2>/dev/null)
if [[ $? -eq 0 && "$FILE_SIZE" -gt 0 ]]; then
echo "[감지됨] $FILE (크기: ${FILE_SIZE}바이트)"
echo "[실행] 위험감지 서비스 트리거 중..."
$DETECTION_CMD
else
echo "[무시] $FILE (파일 크기 0 또는 존재하지 않음)"
fi
else
echo "[무시] $FILE (jpg/jpeg 파일 아님)"
fi
done
💡 사용법 정리
1. 스크립트 저장 및 실행 권한 부여
chmod 777 watch_data_dir.sh
2. 스크립트 실행
./watch_data_dir.sh
3. 백그라운드 실행하기
nohup ./watch_data_dir.sh > watch.log 2>&1 &
4. systemd 서비스로 등록하기
sudo vi /etc/systemd/system/watch_data_dir.service
아래 내용을 입력합니다:
[Unit]
Description=Watch {WATCH_DIR} directory and trigger fall detection
After=network.target docker.service
Requires=docker.service
[Service]
Type=simple
ExecStart={WATCH_SCRIPT_PATH}
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
※ {WATCH_SCRIPT_PATH}는 스크립트 저장 위치로 수정해주세요!
🚀 systemd 서비스 명령어 모음
- 데몬 리로드
sudo systemctl daemon-reload
- 서비스 등록 및 활성화
sudo systemctl enable watch_data_dir.service
- 서비스 시작
sudo systemctl start watch_data_dir.service
- 서비스 상태 확인
sudo systemctl status watch_data_dir.service
- 서비스 로그 확인
sudo journalctl -u watch_data_dir.service -f
✨ 마치며
간단한 쉘 스크립트 하나로 실시간 감시부터 자동화까지 완료할 수 있다니, 정말 편리하지 않나요?
특히 docker나 AI 추론 서버, 데이터 수집 파이프라인 구축할 때 이런 기술을 활용하면 시간과 노력을 크게 줄일 수 있어요. 🙌
다음에는 이 스크립트를 좀 더 고급스럽게, Slack 알림이나 에러 핸들링 추가 버전도 소개해드릴게요!
읽어주셔서 감사합니다 💙
궁금한 점은 댓글로 남겨주세요!
반응형
'Linux' 카테고리의 다른 글
| [SSL] 폐쇄망 서버에서 X.509 v3 인증서 생성 및 적용기 (feat. OpenSSL) (0) | 2025.05.20 |
|---|---|
| [AWS] EC2 에서 JDK 11 설치 (0) | 2023.03.27 |
| [SCP] AWS SCP 파일전송 및 사용법 정리 (0) | 2023.03.27 |
| [Linux] 개발자를 위한 네트워크 지식과 명령어 (0) | 2023.03.09 |
| [Linux] 프로세스 확인 & 죽이기 Kill 명령어 (0) | 2022.10.12 |
댓글