Wie beende ich einen Cron-Job, bevor ich einen anderen ausführe?

Wie beende ich einen Cron-Job, bevor ich einen anderen ausführe?

In crontab -u pi -emeinem digitalen Bilderrahmen habe ich zwei Prozesse.

Der erste ruftfehbeim Neustart und startet eine Diashow.

@reboot bash /home/pi/ledslide1.sh >> /home/pi/logs/slidelog 2&>1

Und dann sollen zu bestimmten Zeiten weitere Instanzen gestartet werden.

15 8 * * * bash /home/pi/ledslide2.sh >> /home/pi/logs/slidelog 2&>1
15 9 * * * bash /home/pi/ledslide3.sh >> /home/pi/logs/slidelog 2&>1
...

Aber die fehDiashow läuft in Dauerschleife. Da muss ich den Prozess ja erstmal beenden, oder? timeoutgeht nicht, da ich nicht weiß wann der Neustart erfolgt?

Antwort1

Verwenden Sie in Ihren ledslide.sh-Skripten einfach pkill -9 fehzum Beenden feh. Sie müssen keine PIDs oder ähnliches im Auge behalten. pkillwird verwendet, um Prozesse mit einem bestimmten Namen zu suchen und zu beenden. Ich schlage vor, die Anweisungen manpagefür pkillund zu lesen pgrep.

Antwort2

Das hat bei mir bisher funktioniert:

@reboot bash /home/pi/ledslide1.sh >> /home/pi/logs/slidelog 2&>1
15 8 * * * pkill -9 feh && bash /home/pi/ledslide2.sh >> /home/pi/logs/slidelog 2&>1

Die .sh-Datei ruft es auf fehund verschiebt es in den Hintergrund. pkill -9 [KEYWORD]Schließt den fehProzess.

verwandte Informationen