2016-07-16 2 views
1

Ich würde gerne ein Bash-Skript ausführen, für den Einsatz auf einem Raspberry Pi, das sagt "wenn die Sekunden der aktuellen Zeit genau 00 oder 30 ist, dann X ".Skript zum Ausführen des Befehls genau X Sekunden nach jeder Minute

Ich habe gegoogelt und einige Vorschläge gefunden, Cron zu verwenden, aber ich denke, dass es eine kleine Verzögerung am Anfang geben würde, die ich vermeiden möchte.

Dank

+0

Willkommen bei StackOverflow! –

Antwort

1

Wenn Sie die Verzögerung von cron nicht mögen, die für den Hintergrund Sachen meistens ist, Sie Schleife im Vordergrund könnte:

while true; do 
    d=$(date +%S) 
    if [ $d -eq 0 -o $d -eq 30 ]; then 
     # command here 
     date +%S.%N 
     # replace the above command with whatever you want 
     sleep 5 
    else 
     sleep 0.001 
    fi 
done 

Der Befehl Linux date kann das derzeitige System überprüfen Uhr ziemlich schnell. Ich habe diese Schleife verwendet, um den Nanosekunden-Timer mit data zu drucken, um die niedrige Latenz zu demonstrieren. Das heißt, auf meinem System bekomme ich:

30.001057483 
00.003022980 
30.003011572 

und so weiter.

+0

'schlafen 0,001' ist wie busywait. Warum bestimmen Sie zwischen den Ausführungen des Zielkommandos nicht genau die genaue Schlaf- und Schlafzeit? – Leon

+0

Weil Schlaf nicht präzise ist –

+0

Danke @ Leo-Izen, das ist genau das, was ich wollte und es funktioniert gut! – David

Verwandte Themen