우분투 실전 명령어 | watch로 시스템 상태 주기 모니터링

운영 중인 서버에서 값이 계속 바뀌는 지표를 볼 때는 같은 명령을 반복 실행하기보다 watch를 쓰는 게 훨씬 빠릅니다. CPU, 메모리, 디스크, 서비스 상태를 한 화면에서 주기적으로 갱신해 볼 수 있어서 장애 초동 대응에 특히 유용합니다.

언제 쓰는가

  • 배포 직후 리소스 사용량이 튀는지 1~2분 동안 지켜볼 때
  • 디스크 사용량이 급증하는 상황에서 특정 경로의 변화를 실시간에 가깝게 확인할 때
  • 서비스 재시작 뒤 포트 오픈 상태나 프로세스 개수를 짧은 주기로 점검할 때

바로 쓰는 명령어

# 2초마다 메모리/스왑 확인
watch -n 2 free -h

# 1초마다 특정 서비스 상태 확인
watch -n 1 'systemctl is-active nginx; systemctl status nginx --no-pager | head -n 8'
# 3초마다 상위 디스크 사용 경로 확인
watch -n 3 'du -h --max-depth=1 /var | sort -h | tail -n 12'

# 타임스탬프 포함해서 네트워크 소켓 확인
watch -n 2 -t 'date "+%F %T"; ss -tulpen | head -n 20'

핵심 옵션/패턴

  • -n <초>: 갱신 주기 설정. 너무 짧게 잡으면 서버와 터미널 모두 부담이 커집니다.
  • -d: 이전 화면 대비 변경된 부분을 강조해서 보여줍니다.
  • -t: 상단 제목 줄을 숨깁니다. 출력 공간이 부족할 때 유용합니다.
  • 작은 따옴표로 명령을 감싸고 내부 파이프라인을 한 줄로 묶으면 복합 점검이 쉽습니다.

명령 출력 예시

Every 2.0s: free -h                    devlab-node-1: Thu Feb 19 00:20:11 2026

               total        used        free      shared  buff/cache   available
Mem:            31Gi       7.2Gi        18Gi       512Mi       6.1Gi        23Gi
Swap:          2.0Gi          0B       2.0Gi
inactive
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: inactive (dead)

자주 하는 실수

  • 갱신 주기를 0.2초처럼 과도하게 짧게 잡는 실수
    • 원격 접속 환경에서는 화면 갱신 비용이 커져 오히려 분석이 느려집니다.
  • 따옴표 없이 파이프 명령을 넣는 실수
    • watch du -h /var | tail처럼 쓰면 watch가 아니라 쉘 파이프가 먼저 적용되어 의도와 다르게 동작합니다.
  • watch 결과만 믿고 근본 로그를 확인하지 않는 실수
    • 상태 변화는 watch로 보고, 원인 분석은 journalctl, 애플리케이션 로그로 이어가야 합니다.

검증 방법

# watch 자체 동작 확인
watch -n 1 'echo ok; date "+%T"'

# 변경 강조 옵션 확인
watch -n 1 -d 'cat /proc/loadavg'
  • 화면이 주기적으로 갱신되는지
  • 변경된 값이 강조되는지
  • 종료 키 Ctrl+C가 즉시 동작하는지

운영 팁

  • 장애 대응 때는 watch 세션을 2개로 나눠서 리소스와 서비스 상태를 분리 모니터링하면 판단 속도가 빨라집니다.
  • 장시간 관찰은 watch보다 로그 수집 도구를 함께 써야 합니다. watch는 즉시 가시화용으로 쓰고, 기록은 별도 파일이나 모니터링 시스템에 남기세요.
  • 팀 공용 런북에는 자주 쓰는 watch 명령을 그대로 복붙할 수 있게 짧은 별칭 형태로 저장해 두면 초동 대응 품질이 올라갑니다.

출처

  • Ubuntu Manpages
  • Debian procps 문서
  • GNU Coreutils 문서