Zum Hauptinhalt springen
Version: Nächste

Zeitfehler simulieren

Inoffizielle Beta-Übersetzung

Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

Dieses Dokument erklärt, wie Sie mit Chaosd einen Zeitversatz simulieren können. Sie können Experimente entweder im Kommandozeilenmodus oder im Dienstmodus erstellen.

Experimente im Kommandozeilenmodus erstellen

Dieser Abschnitt beschreibt, wie Sie Zeitfehler-Experimente mit Befehlen erstellen.

Vor dem Erstellen eines Experiments können Sie folgenden Befehl ausführen, um die Optionen für Zeitfehler zu prüfen:

chaosd attack clock -h

Das Ergebnis sieht wie folgt aus:

$ chaosd attack clock -h

clock skew

Usage:
chaosd attack clock attack [flags]

Flags:
-c, --clock-ids-slice string The identifier of the particular clock on which to act.More clock description in linux kernel can be found in man page of clock_getres, clock_gettime, clock_settime.Muti clock ids should be split with "," (default "CLOCK_REALTIME")
-h, --help help for clock
-p, --pid int Pid of target program.
-t, --time-offset string Specifies the length of time offset.

Global Flags:
--log-level string the log level of chaosd, the value can be 'debug', 'info', 'warn' and 'error'
--uid string the experiment ID

Schnellbeispiel

Testprogramm vorbereiten:

cat > time.c << EOF
#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <sys/types.h>

int main() {
printf("PID : %ld\n", (long)getpid());
struct timespec ts;
for(;;) {
clock_gettime(CLOCK_REALTIME, &ts);
printf("Time : %lld.%.9ld\n", (long long)ts.tv_sec, ts.tv_nsec);
sleep(10);
}
}
EOF

gcc -o get_time ./time.c

Führen Sie dann get_time aus und versuchen Sie, es anzugreifen. Hier ein Beispiel:

chaosd attack clock -p $PID -t 11s

Konfigurationen zur Simulation von Zeitfehlern

ParameterTypeNoteDefault valueRequiredExample
timeOffsetstringSpecifies the length of time offset.NoneYes-5m
clockIds[]stringSpecifies the ID of clock that will be offset. See the clock_gettime documentation for details.["CLOCK_REALTIME"]No["CLOCK_REALTIME", "CLOCK_MONOTONIC"]
pidstringThe identifier of the process.NoneYes1

Experimente im Dienstmodus erstellen

(in Bearbeitung)