Введение
FRAME Studio нужна короткая запись рабочего сеанса, а не исчезающий экран терминала. Сборщик ресурсов в этом независимом экземпляре уже завершён. Вы превратите наблюдения в явные предупреждения и добавите их, не теряя предыдущую запись оператора.
Вы реализуете три функции: классификацию показания, запись полной строки и повторение готового действия измерения. Нужны базовые переменные, функции, условия и циклы Bash; первая работа объясняет показатели. Её файлы не требуются. Пределы — локальная учебная политика, а не универсальные рекомендации для производства. Время — оценка автора.
Назначьте каждому показанию явный статус
На этом шаге вы превратите процент и его предел в многократно используемое решение о предупреждении.
Начните в Terminal. Этот независимый экземпляр уже содержит рабочий metrics.sh; предыдущие файлы не нужны. Войдите в каталог:
cd /home/labex/project/resource-watch
Посмотрите текущее показание:
bash snapshot.sh
Четыре поля с табуляцией — метка UTC, CPU вне простоя, давление на память и заполнение целевой файловой системы. Они описывают этот экземпляр, а не парк производственных машин. Предупреждение о ресурсах не доказывает сбой экспорта фотографий.
cat показывает политику без изменений:
cat policy.sh
Прочитайте три предела и полные пути цели и журнала. В этой работе пределы CPU и памяти равны 80, диска — 50. Это учебные решения. Явное правило: WARN, если показание больше либо равно собственному пределу, иначе OK. Равенство важно. Сохраните предоставленные политику и сборщик.
Откройте незавершённые функции через nano:
Эта работа начинается заново с готовым работающим файлом показателей. Редактируйте файл функций мониторинга из следующей команды, а не копируйте сюда прежний файл показателей. Три значения LIMIT в политике — целые проценты; TARGET — наблюдаемый каталог, LOG — путь истории. Чтение политики не меняет её.
nano monitor-functions.sh
Замените только classify:
classify() {
if (( $1 >= $2 )); then
echo WARN
else
echo OK
fi
}
Первый аргумент — показание, второй — предел. ((...)) сравнивает числа; >= включает равенство. Обе ветви печатают статус: нормальное показание выдаёт OK, а не молчит. Сохраните: Ctrl+O, Enter, Ctrl+X.
source загружает определения. Запускайте тесты в bash -c, поскольку интерактивная оболочка — Zsh. Одинарные кавычки сохраняют команды для Bash:
bash -c 'source ./monitor-functions.sh; classify 79 80; classify 80 80; classify 81 80'
OK
WARN
WARN
Эти заданные значения проверяют правило и не являются текущими измерениями CPU. Функция, всегда возвращающая WARN или OK, неверна, даже если сегодняшнее состояние станции случайно совпадает.
Добавьте полную запись мониторинга
На этом шаге вы запишете все показания и их независимые статусы, не заменяя историю.
Оставайтесь в Terminal, в /home/labex/project/resource-watch. Сначала прочитайте историю оператора:
cat history.tsv
Её исходная строка должна остаться в начале побайтно неизменной. history.tsv — настоящий результат, а не заполняемый вручную отчёт. Каждая новая строка содержит семь полей с табуляцией: метка UTC, CPU, память, диск, затем статусы CPU, памяти и диска в этом порядке.
Откройте функции:
nano monitor-functions.sh
Замените только record_sample:
record_sample() {
local stamp=$1 cpu=$2 memory=$3 disk=$4 logfile=$5
printf '%s\t%s\t%s\t%s\t%s\t%s\t%s\n' \
"$stamp" "$cpu" "$memory" "$disk" \
"$(classify "$cpu" "$CPU_LIMIT")" \
"$(classify "$memory" "$MEMORY_LIMIT")" \
"$(classify "$disk" "$DISK_LIMIT")" >> "$logfile"
}
printf подставляет значения вместо каждого %s, \t записывает табуляцию, \n завершает строку. Обратная косая черта в конце строки продолжает ту же команду. $(...) захватывает вывод функции. Двойные кавычки сохраняют каждое значение и путь журнала с пробелами. >> добавляет, тогда как > уничтожил бы прежние записи. Сохраните: Ctrl+O, Enter, Ctrl+X.
Проверьте заданную запись в отдельном учебном файле. source ./policy.sh загружает пределы в этот процесс Bash. Они не сохраняются автоматически в другом терминале или следующем вызове bash -c.
bash -c 'source ./policy.sh; source ./monitor-functions.sh; record_sample 2026-01-02T03:04:05Z 10 85 20 practice.tsv'
cat practice.tsv
2026-01-02T03:04:05Z 10 85 20 OK WARN OK
Предупреждение памяти сравнивает 85 с 80 и не превращает остальные статусы в WARN. Повторный вызов добавляет ещё одну учебную строку. Не добавляйте примеры в history.tsv: этот файл предназначен для настоящих измерений.
Прочитайте семь полей учебного примера слева направо:
| Поле | Пример | Значение |
|---|---|---|
| 1 | 2026-01-02T03:04:05Z | Время UTC; Z обозначает UTC |
| 2 | 10 | Процент CPU вне простоя |
| 3 | 85 | Процент давления на память |
| 4 | 20 | Процент заполнения целевой системы |
| 5 | OK | CPU 10 ниже своего предела 80 |
| 6 | WARN | Память 85 достигает или превышает свой предел 80 |
| 7 | OK | Диск 20 ниже своего предела 50 |
Табуляция в Terminal может выглядеть как неравномерные пробелы. Сохраните настоящие табуляции функции; не выравнивайте реальную историю пробелами вручную. Исходная запись оператора — подготовленный фон, поэтому её более ранняя дата ожидаема. Только отдельный учебный файл получает этот заданный пример.
Выполните ограниченное наблюдение и сохраните историю
На этом шаге вы повторите настоящие измерения, проверите результат и продолжите работу без потери прогресса.
Оставайтесь в Terminal, в /home/labex/project/resource-watch. Готовый monitor.sh предоставляет capture_once target logfile: получает новое наблюдение, вызывает вашу запись и показывает сохранённую строку. run_monitor должен передавать пути без изменений и вызывать действие ровно запрошенное число раз. Каждое измерение содержит новое секундное окно CPU; это ограниченное наблюдение, а не точный планировщик.
nano monitor-functions.sh
Замените только эту функцию:
run_monitor() {
local count=$1 target=$2 logfile=$3
local n
for ((n = 0; n < count; n++)); do
capture_once "$target" "$logfile"
done
}
Арифметический цикл начинается с нуля, продолжается, пока n меньше count, и увеличивает n после каждого измерения. Кавычки сохраняют оба пути. Эквивалентный цикл while тоже допустим. Сохраните: Ctrl+O, Enter, Ctrl+X.
Выполните три настоящих измерения:
bash monitor.sh 3
До возврата приглашения должны появиться три строки. Каждая метка UTC должна быть позже предыдущей. Реальные значения меняются, и нормальный запуск может не выдать предупреждений. Программа принимает от 1 до 30 измерений. При долгом наблюдении Ctrl+C останавливает скрипт переднего плана и сохраняет добавленные строки. Завершать другие процессы не нужно.
Прочитайте результат и посчитайте строки. wc -l считает строки, заканчивающиеся переводом строки:
cat history.tsv
wc -l history.tsv
После первого указанного запуска должно быть четыре строки: исходная и три новые. Если вы измеряли ещё, их будет больше. Сохраните эти действительные наблюдения.
Продолжите одним измерением:
bash monitor.sh 1
wc -l history.tsv
Число строк увеличится на одну. Повторение безопасно, поскольку запись добавляет, а не заменяет. Сравните каждый статус с его показанием и пределом в policy.sh.
Намеренно попробуйте обычную ошибку ввода: ноль отвергается до измерения.
bash monitor.sh 0
Use a sample count from 1 to 30.
Этот ожидаемый сбой завершается статусом 2 и не меняет историю. Восстановитесь с допустимым количеством, без сброса VM и редактирования истории:
bash monitor.sh 1
Добавится новая строка. Готовый сборщик также отвергает неполные показатели, а не добавляет правдоподобное на вид пустое наблюдение.
Проверьте результат
- Исходная запись оператора остаётся в начале, за ней идут ваши новые наблюдения.
- Первый запуск добавляет три строки; продолжение одним измерением — ещё одну. Больше действительных строк после повторения команд допустимо.
- Сначала прочитайте три процента, затем сравните каждый с собственным пределом. Три статуса OK допустимы; создавать нагрузку или удалять файлы ради предупреждения не нужно.
- Каждое измерение ждёт нового интервала CPU. Короткая пауза нормальна: не нажимайте Enter многократно во время сбора. Возврат приглашения означает конец ограниченного запуска. Закрытие Terminal не сохраняет непрерывный монитор работающим.
Резюме
Вы реализовали предупреждение с включением равенства, добавили полные записи с тремя независимыми статусами и повторили настоящие измерения, сохранив историю. Теперь можно выполнить короткое наблюдение, прочитать его свидетельства и продолжить. Независимое испытание меняет цель и политику, повторно используя изученные инструменты и контракты.



