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 명령어의 다재다능함을 보여줍니다.