Einführung
FRAME Studio benötigt eine kurze Aufzeichnung einer Arbeitssitzung statt einer verschwindenden Terminalanzeige. Der Ressourcen-Sampler ist in dieser unabhängigen Instanz bereits vollständig. Du wandelst Beobachtungen in ausdrückliche Warnungen um und hängst sie an, ohne die vorhandene Bedieneraufzeichnung zu verlieren.
Du implementierst drei Funktionen: einen Messwert klassifizieren, eine vollständige Zeile aufzeichnen und die vorbereitete Messaktion wiederholen. Grundkenntnisse in Bash-Variablen, Funktionen, Bedingungen und Schleifen sind Voraussetzung; das erste Lab erklärt die Messgrößen. Seine Dateien werden nicht benötigt. Die Grenzwerte sind lokale Unterrichtsregeln, keine universellen Produktionsempfehlungen. Die Zeitangabe ist eine Schätzung des Autors.
Weise jedem Messwert einen ausdrücklichen Zustand zu
In diesem Schritt wandelst du Prozentwert und Grenzwert in eine wiederverwendbare Warnentscheidung um.
Beginne in Terminal. Diese unabhängige Instanz enthält bereits eine funktionierende metrics.sh; frühere Dateien sind nicht nötig. Öffne den Arbeitsbereich:
cd /home/labex/project/resource-watch
Betrachte einen aktuellen Messwert:
bash snapshot.sh
Die vier tabulatorgetrennten Felder sind UTC-Zeitstempel, nicht inaktive CPU, Speicherdruck und Belegung des Zieldateisystems. Sie beschreiben diese Instanz, keine Produktionsflotte. Eine Ressourcenwarnung beweist keinen fehlgeschlagenen Fotoexport.
cat zeigt die Richtlinie unverändert an:
cat policy.sh
Lies die drei Grenzwerte und vollständigen Ziel- und Protokollpfade. Hier betragen CPU- und Speichergrenze 80, die Plattengrenze 50. Dies sind Unterrichtsentscheidungen. Es gilt ausdrücklich WARN, wenn ein Wert größer oder gleich seinem eigenen Grenzwert ist, sonst OK. Gleichheit zählt. Bewahre die vorbereitete Richtlinie und den Sampler.
Öffne die unvollständigen Funktionen mit nano:
Dieses Lab beginnt erneut mit einer vorbereiteten, funktionierenden Messdatei. Bearbeite die im nächsten Befehl genannte Überwachungsfunktionsdatei, statt die frühere Messdatei hierher zu kopieren. Die drei LIMIT-Werte der Richtlinie sind ganzzahlige Prozente; TARGET ist das beobachtete Verzeichnis, LOG der Verlaufspfad. Lesen ändert die Richtlinie nicht.
nano monitor-functions.sh
Ersetze nur classify durch:
classify() {
if (( $1 >= $2 )); then
echo WARN
else
echo OK
fi
}
Das erste Argument ist der Messwert, das zweite die Grenze. ((...)) vergleicht Zahlen; >= schließt Gleichheit ein. Beide Zweige geben einen Zustand aus: Ein normaler Wert meldet OK statt zu schweigen. Speichere mit Ctrl+O, Enter, Ctrl+X.
source lädt Definitionen. Führe die Tests in bash -c aus, weil die interaktive Shell Zsh ist. Einfache Anführungszeichen bewahren die Befehle für Bash:
bash -c 'source ./monitor-functions.sh; classify 79 80; classify 80 80; classify 81 80'
OK
WARN
WARN
Diese vorgegebenen Werte testen die Regel; es sind keine aktuellen CPU-Messungen. Eine Funktion, die immer WARN oder OK meldet, ist auch dann falsch, wenn der Arbeitsplatz heute zufällig dazu passt.
Hänge einen vollständigen Überwachungsdatensatz an
In diesem Schritt zeichnest du alle Messwerte und ihre unabhängigen Zustände auf, ohne den Verlauf zu ersetzen.
Bleibe in Terminal, in /home/labex/project/resource-watch. Lies zuerst den Bedienerverlauf:
cat history.tsv
Seine Originalzeile muss bytegenau am Anfang erhalten bleiben. history.tsv ist das tatsächliche Ergebnis, kein manuell auszufüllender Bericht. Jede neue Zeile enthält sieben tabulatorgetrennte Felder: UTC-Zeitstempel, CPU, Speicher, Platte und anschließend deren CPU-, Speicher- und Plattenzustände in dieser Reihenfolge.
Öffne die Funktionen:
nano monitor-functions.sh
Ersetze nur record_sample durch:
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 ersetzt jedes %s, \t schreibt einen Tabulator und \n beendet die Zeile. Ein umgekehrter Schrägstrich am Zeilenende setzt denselben Befehl fort. $(...) übernimmt eine Funktionsausgabe. Doppelte Anführungszeichen erhalten jeden Wert sowie einen Protokollpfad mit Leerzeichen. >> hängt an; > würde frühere Datensätze zerstören. Speichere mit Ctrl+O, Enter, Ctrl+X.
Teste einen vorgegebenen Datensatz in einer separaten Übungsdatei. source ./policy.sh lädt die Grenzwerte in diesen Bash-Prozess. Sie bleiben nicht automatisch in einem anderen Terminal oder einem späteren bash -c-Aufruf erhalten.
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
Die Speicherwarnung vergleicht 85 mit 80; sie macht die anderen Zustände nicht zu WARN. Ein erneuter Aufruf hängt eine weitere Übungszeile an. Füge keine Beispiele zu history.tsv hinzu: Diese Datei bleibt echten Messungen vorbehalten.
Lies die sieben Felder des Übungsbeispiels von links nach rechts:
| Feld | Beispiel | Bedeutung |
|---|---|---|
| 1 | 2026-01-02T03:04:05Z | UTC-Zeit; Z bezeichnet UTC |
| 2 | 10 | Nicht inaktiver CPU-Prozentwert |
| 3 | 85 | Speicherdruck-Prozentwert |
| 4 | 20 | Belegungsprozentsatz des Zielsystems |
| 5 | OK | CPU 10 liegt unter ihrer Grenze 80 |
| 6 | WARN | Speicher 85 erreicht oder überschreitet seine Grenze 80 |
| 7 | OK | Platte 20 liegt unter ihrer Grenze 50 |
Tabulatoren können in Terminal wie ungleichmäßige Leerzeichen aussehen. Bewahre die echten Tabulatoren der Funktion; richte den echten Verlauf nicht manuell mit Leerzeichen aus. Die ursprüngliche Bedienerzeile ist vorbereiteter Hintergrund, daher ist ihr älteres Datum normal. Nur die separate Übungsdatei erhält dieses vorgegebene Beispiel.
Beobachte begrenzt und erhalte den Verlauf
In diesem Schritt wiederholst du echte Messungen, prüfst das Ergebnis und setzt ohne Fortschrittsverlust fort.
Bleibe in Terminal, in /home/labex/project/resource-watch. Die vorbereitete monitor.sh stellt capture_once target logfile bereit: Sie erfasst eine neue Beobachtung, ruft deine Aufzeichnung auf und zeigt die gespeicherte Zeile. Deine run_monitor-Schleife muss die Pfade unverändert übergeben und die Aktion genau so oft wie angefordert aufrufen. Jede Erfassung enthält ein neues einsekündiges CPU-Fenster; dies ist eine begrenzte Beobachtung, kein präziser Zeitplaner.
nano monitor-functions.sh
Ersetze nur die Funktion durch:
run_monitor() {
local count=$1 target=$2 logfile=$3
local n
for ((n = 0; n < count; n++)); do
capture_once "$target" "$logfile"
done
}
Die arithmetische Schleife beginnt bei null, läuft solange n kleiner als count ist und erhöht n nach jeder Erfassung. Die Anführungszeichen bewahren beide Pfade. Eine gleichwertige while-Schleife ist ebenfalls gültig. Speichere mit Ctrl+O, Enter, Ctrl+X.
Erfasse drei echte Stichproben:
bash monitor.sh 3
Vor der Rückkehr des Prompts sollten drei Zeilen erscheinen. Jeder UTC-Zeitstempel muss später als der vorherige liegen. Echte Werte schwanken, und ein normaler Lauf muss nicht warnen. Das Programm akzeptiert 1 bis 30 Stichproben. Bei längerer Beobachtung beendet Ctrl+C das Vordergrundskript und erhält angehängte Zeilen. Andere Prozesse musst du nicht beenden.
Lies das Ergebnis und zähle Zeilen. wc -l zählt durch Zeilenumbruch abgeschlossene Zeilen:
cat history.tsv
wc -l history.tsv
Nach dem ersten beschriebenen Lauf sollten es vier sein: die Originalzeile und drei neue. Bei zusätzlichen Messungen sind es mehr. Bewahre diese gültigen Beobachtungen.
Setze mit einer Stichprobe fort:
bash monitor.sh 1
wc -l history.tsv
Die Gesamtzahl steigt um eins. Wiederholen ist sicher, weil die Aufzeichnung anhängt statt zu ersetzen. Vergleiche jeden Zustand mit seinem Mess- und Grenzwert in policy.sh.
Probiere absichtlich einen üblichen Eingabefehler: Null wird vor der Messung abgewiesen.
bash monitor.sh 0
Use a sample count from 1 to 30.
Dieser erwartete Fehler endet mit Status 2 und ändert den Verlauf nicht. Setze mit einer gültigen Anzahl fort, ohne die VM zurückzusetzen oder den Verlauf zu bearbeiten:
bash monitor.sh 1
Eine neue Zeile wird angehängt. Der vorbereitete Sampler weist auch unvollständige Messwerte zurück, statt eine plausibel aussehende leere Beobachtung anzuhängen.
Ergebnis prüfen
- Die ursprüngliche Bedienerzeile steht weiterhin am Anfang, gefolgt von deinen neuen Beobachtungen.
- Der erste Lauf hängt drei Zeilen an; eine weitere Stichprobe fügt eine hinzu. Zusätzliche gültige Zeilen nach wiederholten Befehlen sind erlaubt.
- Lies zuerst die drei Prozentwerte und vergleiche jeden mit seiner eigenen Grenze. Dreimal OK ist gültig; du musst weder Last erzeugen noch Dateien löschen, um eine Warnung auszulösen.
- Jede Erfassung wartet auf ein neues CPU-Intervall. Eine kurze Pause ist normal; drücke während der Messung nicht wiederholt Enter. Kehrt der Prompt zurück, ist der begrenzte Lauf beendet. Das Schließen von Terminal lässt keinen kontinuierlichen Monitor weiterlaufen.
Zusammenfassung
Du hast eine einschließlich Gleichheit geltende Warnregel implementiert, vollständige Datensätze mit drei unabhängigen Zuständen angehängt und echte Messungen unter Erhalt des Verlaufs wiederholt. Jetzt kannst du eine kurze Beobachtung ausführen, ihre Belege lesen und sie fortsetzen. Die unabhängige Challenge ändert Ziel und Richtlinie und verwendet die vermittelten Werkzeuge und Verträge erneut.



