
Mein Job ist von MySQL abhängig. Daher möchte ich, dass mein Job nach MySQL gestartet werden kann.
Ich lese dasEmporkömmling Kochbuchund ich finde, start on
dass ein Job automatisch gestartet werden kann.
start on started mysql
Und es funktioniert. Aber ich möchte nicht, dass MySQL meinen Job nach dem Booten beeinflusst. Wenn ich meinen Job stoppe, wird er durch einen Neustart von MySQL neu gestartet. Wie kann ich das vermeiden?
Antwort1
Erstellen Sie eine Sperrdatei im /tmp/
Ordner, um nachzuverfolgen, dass Ihr Job bereits ausgeführt wurde. Hier ein Beispiel:
Erstellen Sie diese beiden Konfigurationsdateien für Upstart-Jobs:
/etc/init/joba.conf
# job A start on local-filesystems stop on runlevel[016] script /bin/echo job-A started >> /tmp/myjobs.log exec sleep 5 end script
/etc/init/jobb.conf
# job B triggered after A start on started joba script /bin/echo job-B started >> /tmp/myjobs.log if ! [ -f /tmp/jobb.lock ] then /bin/echo " do job-B tasks" >> /tmp/myjobs.log /bin/touch /tmp/jobb.lock else /bin/echo " bypass job-B tasks" >> /tmp/myjobs.log fi exec sleep 5 end script
Neustart
- Prüfen
cat /tmp/myjobs.log
oder in einem anderen Fenster öffnensudo tail -f /tmp/myjobs.log
. - Versuchen Sie, Job-A erneut auszuführen
sudo start joba
Prüfen
/tmp/myjobs.log
, siehe Bypass-Hinweis:job-A started job-B started do job-B tasks job-B started bypass job-B tasks job-A started job-B started job-A started bypass job-B tasks
Notiz:Für jeden Lauf haben wir 3 Zeilen. Die Zeilensortierung spielt hier keine Rolle. stdout
Pufferproblem, es hat nichts mit Upstart zu tun. Die Jobs werden in der richtigen Reihenfolge ausgeführt.