우분투 실전 명령어 | watch와 entr로 반복 점검 자동화

우분투 실전 명령어 | watch와 entr로 반복 점검 자동화

언제 쓰는가

로그나 상태 값을 짧은 주기로 계속 확인해야 할 때 watch가 가장 빠릅니다. 코드나 설정 파일이 바뀔 때만 테스트를 다시 돌리고 싶다면 entr가 더 효율적입니다. 서버 점검 중에 화면을 고정해 변화를 추적하거나, 개발 중 저장 이벤트에 맞춰 검증을 반복할 때 특히 유용합니다.

바로 쓰는 명령어

watch -n 2 -d 'ss -s'
ls *.py | entr -c pytest -q
find /etc/nginx -type f | entr -r sudo systemctl reload nginx

핵심 옵션/패턴

  • watch -n 2: 2초 간격으로 명령을 반복 실행합니다.
  • watch -d: 직전 결과와 달라진 부분을 하이라이트해서 변화 포인트를 빨리 찾게 도와줍니다.
  • watch -t: 상단 헤더를 숨겨 출력 영역을 넓힙니다.
  • entr -c: 실행 전 화면을 지워서 결과를 깔끔하게 봅니다.
  • entr -r: 장시간 실행 프로세스를 재시작 모드로 돌려 개발 서버 재기동에 적합합니다.
  • 패턴: find ... | entr ... 조합은 감시 대상 파일 목록을 유연하게 만들 때 안정적입니다.

명령 출력 예시

$ watch -n 1 -d 'free -h'
Every 1.0s: free -h
               total        used        free      shared  buff/cache   available
Mem:            15Gi       6.2Gi       1.1Gi       420Mi       8.0Gi       8.6Gi
Swap:          2.0Gi       128Mi       1.9Gi
$ ls *.py | entr -c pytest -q
tests/test_api.py::test_health PASSED
tests/test_auth.py::test_token PASSED
2 passed in 0.41s

자주 하는 실수

  • entr가 설치되지 않았는데 바로 사용해서 command not found가 발생합니다. Ubuntu에서는 sudo apt install entr로 먼저 설치해야 합니다.
  • 감시 파일 목록이 비어 있으면 entr가 즉시 종료됩니다. 파이프 앞단에서 lsfind 결과가 실제로 나오는지 먼저 확인해야 합니다.
  • watch 안에서 큰 명령을 너무 짧은 주기(-n 0.2 등)로 돌려 서버 부하를 키우는 경우가 많습니다. 점검 목적에 맞는 주기를 정하는 게 중요합니다.
  • entr -r로 재시작할 프로세스가 시그널 처리를 제대로 못하면 좀비 프로세스가 남을 수 있습니다. 운영 배치 전에 짧은 샌드박스 검증이 필요합니다.

검증 방법

# watch 동작 확인: 3회만 실행 후 종료
watch -n 1 -t 'date +%T' | head -n 3
# entr 트리거 확인: 파일 변경 시각을 갱신해 명령 재실행 확인
printf 'a\n' > /tmp/entr-demo.txt
printf '/tmp/entr-demo.txt\n' | entr -c sh -c 'echo triggered at $(date +%T)'
# 감시 대상 파일 목록 사전 점검
find . -maxdepth 2 -name '*.py' | sed -n '1,20p'

운영 팁

watch는 실시간 관찰에, entr는 변경 이벤트 기반 자동 실행에 특화되어 있습니다. 운영 점검에서는 watch 주기를 너무 공격적으로 잡지 말고, 개발 루프에서는 entr -c로 화면을 정리해 피드백 속도를 높이면 집중력이 크게 좋아집니다.

출처

  • Ubuntu Manpage: watch
  • entr 공식 문서
  • GNU findutils 문서