Linux 명령어 반복

LinuxBeginner
지금 연습하기

소개

watch 명령어는 Linux 시스템에서 사용자가 명령을 주기적으로 실행하고 터미널에 출력을 표시할 수 있게 해주는 강력한 유틸리티입니다. 이 도구는 시스템 리소스를 모니터링하고, 파일 변경 사항을 추적하거나, 정기적인 간격으로 출력을 생성하는 모든 프로세스를 관찰하는 데 특히 유용합니다.

이 Lab 에서는 watch 명령어를 사용하여 반복적인 작업을 자동화하고 시스템 변경 사항을 모니터링하는 방법을 배우게 됩니다. 구문, 옵션 및 실제 시나리오에서의 실용적인 적용 방법을 이해하게 될 것입니다. 이 Lab 을 마치면 시스템의 변경 사항을 효율적으로 관찰하기 위해 자동화된 모니터링 프로세스를 설정할 수 있게 됩니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 100%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

Watch 명령어 기본 이해

watch 명령어를 사용하면 지정된 간격으로 다른 명령을 반복적으로 실행할 수 있습니다. 이는 변화하는 상황을 모니터링하거나, 시간이 지남에 따라 명령의 출력을 관찰해야 할 때 유용합니다.

watch 명령어의 기본 구문을 살펴보겠습니다.

watch [options] command

일반적인 옵션은 다음과 같습니다.

  • -n <seconds>: 업데이트 간격을 초 단위로 지정합니다 (기본값은 2 초).
  • -d: 업데이트 간의 변경 사항을 강조 표시합니다.
  • -t: 명령과 현재 시간을 표시하는 헤더를 끕니다.

watch 명령어가 어떻게 작동하는지 보여주는 간단한 예제를 만들어 보겠습니다. 먼저, 작업 디렉토리로 이동합니다.

cd ~/project

이제 실행될 때마다 난수를 생성하는 간단한 스크립트를 만들어 보겠습니다. 이를 통해 watch가 명령을 반복하는 방식을 시각적으로 확인할 수 있습니다. generate_number.sh라는 파일을 만들고 다음 내용을 입력합니다.

nano ~/project/generate_number.sh

nano 편집기에서 다음 내용을 입력합니다.

#!/bin/bash
echo "Random number: $((RANDOM % 100 + 1))" > ~/project/number.txt
cat ~/project/number.txt

Ctrl+O를 누른 다음 Enter 키를 눌러 파일을 저장하고, Ctrl+X를 눌러 nano 를 종료합니다.

이제 스크립트를 실행 가능하게 만듭니다.

chmod +x ~/project/generate_number.sh

스크립트를 한 번 실행하여 어떤 작업을 하는지 확인해 보겠습니다.

~/project/generate_number.sh

출력은 1 에서 100 사이의 난수를 표시해야 합니다.

이제 watch 명령어를 사용하여 이 스크립트를 3 초마다 실행해 보겠습니다.

watch -n 3 ~/project/generate_number.sh

3 초마다 명령 출력이 새로 고쳐지면서 매번 새로운 난수를 표시하는 것을 볼 수 있습니다. 상단의 헤더는 실행 중인 명령과 현재 시간을 보여줍니다.

watch 명령어를 종료하려면 Ctrl+C를 누릅니다.

변경 사항을 강조 표시하는 -d 옵션을 사용하여 다른 예제를 시도해 보겠습니다.

watch -n 3 -d ~/project/generate_number.sh

업데이트 간에 출력의 변경 사항이 어떻게 강조 표시되는지 확인하십시오. 이는 대량의 출력을 모니터링하고 변경된 사항을 빠르게 식별해야 할 때 특히 유용합니다.

Watch 를 이용한 시스템 리소스 모니터링

watch 명령어를 가장 많이 사용하는 경우 중 하나는 시스템 리소스를 모니터링하는 것입니다. 이 단계에서는 watch를 사용하여 몇 가지 기본 시스템 정보를 모니터링하는 방법을 배우게 됩니다.

free 명령어를 사용하여 시스템의 메모리 사용량을 모니터링하는 것으로 시작해 보겠습니다.

watch -n 2 free -m

위 명령은 메모리 사용량을 메가바이트 단위 (-m) 로 표시하고 2 초마다 출력을 새로 고칩니다. 이는 시간이 지남에 따라 메모리 소비량을 모니터링하는 데 유용합니다.

Ctrl+C를 눌러 watch 명령어를 종료합니다.

이제 디스크 사용량을 모니터링해 보겠습니다.

watch -n 5 df -h

이 명령은 디스크 사용량을 사람이 읽을 수 있는 형식 (-h) 으로 표시하고 5 초마다 업데이트합니다. 시스템의 서로 다른 파티션에서 사용 가능한 공간과 사용된 공간을 확인할 수 있습니다.

Ctrl+C를 눌러 watch 명령어를 종료합니다.

시스템에서 실행 중인 프로세스를 모니터링하여 또 다른 유용한 응용 프로그램을 살펴보겠습니다.

watch -n 3 "ps aux | head -10"

이 명령은 CPU 사용량별로 정렬된 상위 10 개 프로세스를 표시하고 3 초마다 업데이트합니다. 복잡한 명령을 따옴표로 묶어 watch와 함께 제대로 작동하도록 했습니다.

Ctrl+C를 눌러 watch 명령어를 종료합니다.

파일 변경 사항을 모니터링할 특정 디렉토리를 만들어 보겠습니다.

mkdir -p ~/project/monitor_dir
touch ~/project/monitor_dir/file1.txt

이제 watch를 사용하여 디렉토리의 변경 사항을 모니터링해 보겠습니다.

watch -n 2 "ls -l ~/project/monitor_dir"

이 명령을 터미널에서 계속 실행합니다. 이제 새 터미널을 열고 모니터링된 디렉토리에 새 파일을 만듭니다.

touch ~/project/monitor_dir/file2.txt

첫 번째 터미널에서 watch 명령어가 새 파일을 표시하도록 자동으로 업데이트되는 방식을 관찰하십시오. 이는 watch를 사용하여 디렉토리 변경 사항을 실시간으로 모니터링하는 방법을 보여줍니다.

첫 번째 터미널에서 Ctrl+C를 눌러 watch 명령어를 종료합니다.

Watch 명령어 고급 기능 활용

이 단계에서는 모니터링 작업을 더욱 효율적으로 만들 수 있는 watch 명령어의 몇 가지 고급 기능에 대해 배우게 됩니다.

명령어와 현재 시간을 표시하는 헤더를 끄는 -t 옵션을 살펴보겠습니다.

watch -n 3 -t date

이제 헤더가 숨겨져 명령 출력에만 집중된 더 깔끔한 디스플레이를 제공하는 것을 확인하십시오. 이는 출력에 대한 화면 공간을 최대화하려는 경우 유용합니다.

Ctrl+C를 눌러 종료합니다.

다음으로, -g 또는 --chgexit 옵션과 함께 watch를 사용하는 방법을 살펴보겠습니다. 이 옵션은 명령의 출력이 변경될 때 watch를 종료하게 합니다.

touch ~/project/test_change.txt
watch -g -n 1 "ls -l ~/project/test_change.txt"

이 명령이 실행되는 동안 새 터미널을 열고 파일을 수정합니다.

echo "hello" > ~/project/test_change.txt

첫 번째 터미널의 watch 명령어는 파일의 변경 사항을 감지하면 자동으로 종료됩니다.

더 실용적인 예제를 만들어 보겠습니다. 가끔 오류가 발생하는 로그 파일을 시뮬레이션하는 스크립트를 만들 것입니다.

nano ~/project/simulate_logs.sh

nano 편집기에서 다음 내용을 입력합니다.

#!/bin/bash
LOG_FILE=~/project/application.log

## Initialize log file
echo "Starting log simulation" > $LOG_FILE

## Generate simulated log entries
for i in {1..10}; do
  echo "[$(date)] - INFO: Normal operation $i" >> $LOG_FILE
  sleep 1

  ## Occasionally generate an error
  if ((i % 3 == 0)); then
    echo "[$(date)] - ERROR: Something went wrong!" >> $LOG_FILE
  fi
done

echo "Log simulation complete" >> $LOG_FILE

저장하고 nano 를 종료한 다음 (Ctrl+O, Enter, Ctrl+X) 스크립트를 실행 가능하게 만듭니다.

chmod +x ~/project/simulate_logs.sh

이제 grep과 함께 watch를 사용하여 로그 파일에서 오류 메시지를 모니터링해 보겠습니다.

watch -n 1 "grep ERROR ~/project/application.log || echo 'No errors found'"

다른 터미널에서 로그 시뮬레이션 스크립트를 실행합니다.

~/project/simulate_logs.sh

첫 번째 터미널이 로그 파일에 오류 메시지가 나타날 때 어떻게 표시되는지 확인하십시오. 이는 실시간으로 로그를 모니터링하기 위해 watch를 사용하는 실용적인 예입니다.

Ctrl+C를 눌러 watch 명령어를 종료합니다.

마지막으로, watch 를 백그라운드에서 실행하고 출력을 파일로 리디렉션하는 방법을 살펴보겠습니다.

watch -n 5 date > ~/project/date_output.txt 2>&1 &

이 명령은 watch 명령어를 백그라운드에서 실행하여 5 초마다 날짜를 업데이트하고 출력을 파일에 저장합니다. 파일 내용을 확인할 수 있습니다.

cat ~/project/date_output.txt

백그라운드 watch 프로세스를 중지하려면 PID 를 찾아 종료합니다.

ps aux | grep "watch -n 5 date"
kill <PID>  ## Replace <PID> with the actual process ID number

이러한 예제는 다양한 모니터링 작업에 대한 watch 명령어의 다재다능함을 보여줍니다.

요약

이 Lab 에서는 Linux 에서 watch 명령어를 사용하여 지정된 간격으로 명령을 반복적으로 실행하는 방법을 배웠습니다. 이 강력한 유틸리티는 다양한 모니터링 작업에 사용할 수 있으며, 시스템 관리자와 Linux 사용자 모두에게 필수적인 도구입니다.

이 Lab 에서 다룬 주요 개념은 다음과 같습니다.

  1. 간격을 지정하는 -n 및 변경 사항을 강조 표시하는 -d와 같은 다양한 옵션을 사용하여 watch 명령어를 기본적으로 사용하는 방법.
  2. free, df, ps와 같은 명령과 결합된 watch를 사용하여 메모리 사용량, 디스크 공간 및 실행 중인 프로세스와 같은 시스템 리소스를 모니터링하는 방법.
  3. watch를 사용하여 파일 및 디렉토리 변경 사항을 실시간으로 모니터링하는 방법.
  4. 헤더 없이 실행 (-t), 변경 감지 시 종료 (-g), 특정 모니터링 요구 사항에 맞게 다른 명령과 결합하는 등 watch의 고급 기능.
  5. watch를 백그라운드에서 실행하고 출력을 파일로 리디렉션하는 방법.

watch 명령어는 변경되는 상황을 모니터링하거나 명령 출력을 자동으로 새로 고쳐야 할 때 시간과 노력을 절약할 수 있는 다재다능한 도구입니다. 터미널 출력을 생성하는 모든 명령과 함께 작동할 수 있으므로 시스템 관리부터 애플리케이션 개발 및 디버깅에 이르기까지 광범위한 시나리오에 적용할 수 있습니다.