Der_Da_93
irgendwie
Hallo liebes Unixboard,
Ich bin gerade dabei einen Home-Server dazu zu bringen selbständig nachts hochzufahren (um ihn Backups machen zu lassen) und ihn wieder runterfahren zu lassen.
Das Hochfahren ist unter Debian mit rtcwake einfach zu lösen. Jetzt möchte ich aber, dass er nur dann runterfährt, wenn er auch via rtc gestartet wurde.
Dafür habe ich mir überlegt, dass mein rtcwake-Script in eine Datei die geplante Aufwachzeit schreibt.
Denn wenn jetzt das Backup fertig ist, sollte sich hiermit (Pseudo-Code) feststellen lassen, ob er via rtc gestartet wurde:
Nun hab ich versucht das mit einem Bash-Script zu lösen:
Leider gibt's dabei ein Problem
In der Zeile, in der ich versuche zu runden, wird das Semikolon als Befehlstrenner interpretiert, es kommt die Fehlermeldung "$up (also die Zahl von $up): Kommando nicht gefunden"
Ich hab schon versucht mit "\" zu escapen, dafür bekomme ich dann "illegal character".
Kann mir jemand helfen?
P.S.: Ich bin ein absoluter bash-Anfänger und nehme auch andere Verbesserungsvorschläge gerne an.
Ich bin gerade dabei einen Home-Server dazu zu bringen selbständig nachts hochzufahren (um ihn Backups machen zu lassen) und ihn wieder runterfahren zu lassen.
Das Hochfahren ist unter Debian mit rtcwake einfach zu lösen. Jetzt möchte ich aber, dass er nur dann runterfährt, wenn er auch via rtc gestartet wurde.
Dafür habe ich mir überlegt, dass mein rtcwake-Script in eine Datei die geplante Aufwachzeit schreibt.
Denn wenn jetzt das Backup fertig ist, sollte sich hiermit (Pseudo-Code) feststellen lassen, ob er via rtc gestartet wurde:
Code:
rtctime //aus der Datei
uptime
boottime = now-uptime; // Zeit zu der der Rechner gestartet wurde
delta = |boottime-rtctime|
if(delta < 3 min){
//wurde also per rtc gestartet
}
Nun hab ich versucht das mit einem Bash-Script zu lösen:
PHP:
#!/bin/bash
function startedByRTC() {
rtctime=`cat rtcwake`; //die Datei
now=`date +%s`;
up=`awk '{print $1}' /proc/uptime`;
up= $(echo "scale=0;$up/1"|bc); //runden
boottime=`expr $now - $up`;
delta= `expr $rtctime - $boottime`;
if[`test $delta -lt 180` && `test $delta -gt -180`]
then
return $TRUE;
else
return $FALSE;
fi
}
Leider gibt's dabei ein Problem
In der Zeile, in der ich versuche zu runden, wird das Semikolon als Befehlstrenner interpretiert, es kommt die Fehlermeldung "$up (also die Zahl von $up): Kommando nicht gefunden"
Ich hab schon versucht mit "\" zu escapen, dafür bekomme ich dann "illegal character".
Kann mir jemand helfen?
P.S.: Ich bin ein absoluter bash-Anfänger und nehme auch andere Verbesserungsvorschläge gerne an.
Zuletzt bearbeitet: