Продвинутые функции команды watch
На этом этапе вы узнаете о некоторых продвинутых функциях команды watch
, которые могут сделать ваши задачи мониторинга более эффективными.
Начнем с изучения параметра -t
, который отключает отображение заголовка с командой и текущим временем:
watch -n 3 -t date
Обратите внимание, что заголовок теперь скрыт, и на экране отображается только чистый вывод команды. Это полезно, когда вы хотите максимизировать пространство экрана для вывода.
Нажмите Ctrl+C
, чтобы выйти.
Далее рассмотрим, как использовать watch
с параметром -g
или --chgexit
. Этот параметр заставляет 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
Теперь используем watch
с grep
для мониторинга ошибок в файле журнала:
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
для различных задач мониторинга.