447 Stimmen

Alle 30 Sekunden einen Cron laufen lassen

Ok, ich habe also einen Cron, den ich alle 30 Sekunden ausführen muss.

Hier ist, was ich habe:

*/30 * * * * /bin/bash -l -c 'cd /srv/last_song/releases/20120308133159 && script/rails runner -e production '\''Song.insert_latest'\'''

Es läuft, aber läuft es alle 30 Minuten oder alle 30 Sekunden?

Außerdem habe ich gelesen, dass Cron vielleicht nicht das beste Werkzeug ist, wenn ich es so oft laufen lasse. Gibt es ein anderes besseres Tool, das ich unter Ubuntu 11.04 verwenden oder installieren kann und das eine bessere Option ist? Gibt es eine Möglichkeit, den obigen Cron zu reparieren?

16voto

Pankaj Shinde Punkte 2843

Cron-Jobs können nicht verwendet werden, um einen Job in Sekundenintervallen zu planen, d.h. Sie können einen Cron-Job nicht so planen, dass er alle 5 Sekunden läuft. Die Alternative ist, ein Shell-Skript zu schreiben, das sleep 5 Befehl enthalten.

Erstellen Sie ein Shell-Skript every-5-seconds.sh mit einer Bash-While-Schleife wie unten gezeigt.

$ cat every-5-seconds.sh
#!/bin/bash
while true
do
 /home/ramesh/backup.sh
 sleep 5
done

Führen Sie nun dieses Shell-Skript im Hintergrund mit nohup wie unten dargestellt. Dadurch wird das Skript auch dann noch ausgeführt, wenn Sie sich von Ihrer Sitzung abmelden. Das Shell-Skript backup.sh wird alle 5 Sekunden ausgeführt.

$ nohup ./every-5-seconds.sh &

14voto

shlomia Punkte 840

Sie können sich meine Antwort auf diese ähnliche Frage

Ich habe dort ein Bash-Skript namens "runEvery.sh" eingefügt, das Sie mit cron alle 1 Minute ausführen können und als Argumente den eigentlichen Befehl, den Sie ausführen möchten, und die Häufigkeit in Sekunden, in der Sie ihn ausführen möchten, übergeben.

etwas wie dies

* * * * * ~/bin/runEvery.sh 5 myScript.sh

14voto

user7079817 Punkte 131

Uhr benutzen:

$ watch --interval .30 script_to_run_every_30_sec.sh

14voto

sujoshi Punkte 147

Derzeit verwende ich die folgende Methode. Funktioniert ohne Probleme.

* * * * * /bin/bash -c ' for i in {1..X}; do YOUR_COMMANDS ; sleep Y ; done '

Wenn Sie jedes N Sekunden dann X será 60/N y Y será N .

9voto

Adi Chiru Punkte 79

Verwenden Sie fcron ( http://fcron.free.fr/ ) - gibt Ihnen Granularität in Sekunden und viel besser und mehr Funktionen als cron (vixie-cron) und auch stabil. Ich habe früher dumme Dinge gemacht, wie etwa 60 PHP-Skripte auf einer Maschine in sehr dummen Einstellungen laufen zu lassen, und es hat immer noch seine Arbeit getan!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X