In crontab -u pi -e
meinem digitalen Bilderrahmen habe ich zwei Prozesse.
Der erste ruftfeh
beim 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 feh
Diashow läuft in Dauerschleife. Da muss ich den Prozess ja erstmal beenden, oder? timeout
geht nicht, da ich nicht weiß wann der Neustart erfolgt?
Antwort1
Verwenden Sie in Ihren ledslide.sh-Skripten einfach pkill -9 feh
zum Beenden feh
. Sie müssen keine PIDs oder ähnliches im Auge behalten. pkill
wird verwendet, um Prozesse mit einem bestimmten Namen zu suchen und zu beenden. Ich schlage vor, die Anweisungen manpage
für pkill
und 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 feh
und verschiebt es in den Hintergrund. pkill -9 [KEYWORD]
Schließt den feh
Prozess.