Warum funktioniert mein Cronjob nicht?

Warum funktioniert mein Cronjob nicht?

Ich habe 20 Fragen zu Cron-Jobs und was man sonst noch alles einstellen muss durchgelesen und alles gemacht. Markieren Sie das nicht als Duplikat. Mein Skript sieht also so aus:

#!/bin/bash

openRTSP_process_ids=(`/bin/ps -fu $USER | /bin/grep "openRTSP" | /bin/grep -v "grep" | /bin/grep -v $0 | /usr/bin/awk '{print $2}'`)
echo $openRTSP_process_ids
for i in "${openRTSP_process_ids[@]}"
do
    if [ -n "$i" ]; then
        echo $i
        kill -1 $i
    fi
done

und meine Crontab sieht so aus:

#SHELL=/bin/bash
PATH=/home/username/bin:/home/username/.local/bin:/opt/OpenPrinting-Gutenprint/sbin:/opt/OpenPrinting-Gutenprint/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap$

43,41,26,21,16,12,1,7,48,46,33,49,54,57,59,4,9,14,19,24,27,29,32,34,39,44 * * * * bash /home/username/Documents/stop_openRTSP &>> /home/username/stop.log
50,55,0,5,10,15,20,25,30,35,40,45 * * * * /home/username/Documents/start_openRTSP

Ich habe es mit der Standard-Sh-Shell und der Bash-Shell versucht, beides funktioniert nicht. Ich habe versucht, die Ausgabe mit &>> Bash-Umleitung und 2>&1 Sh-Umleitung an einen Protokolldatei-Bot umzuleiten, aber die Protokolldatei ist einfach leer. Ich habe eine Reihe von Dingen ausprobiert, aber der Prozess wird nie beendet, aber er wird beendet, wenn ich es über die Befehlszeile mache.

Zusätzlich zum Hinzufügen von Pfad und Shell habe ich alle Befehle mit ihrem vollständigen Pfad geschrieben. Ich überprüfe, ob es funktioniert, indem ich mir ps aux | grep openRTPS ansehe und die geöffneten Prozesse ansehe. Wenn ich das Skript von der Befehlszeile aus ausführe, werden die Prozesse geschlossen, aber über den Cron-Job bleiben sie einfach geöffnet.

In einigen Versionen hatte ich am Anfang ein leichtes „Bla“, daher weiß ich, dass dieses spezielle Skript ausgeführt wird, aber nicht alle Befehle.

Antwort1

Wenn Jobs oder Skripte nicht das tun, was Sie erwarten, ist ein sehr hilfreicher Tipp zur Fehlerbehebung, set -xoben im Skript hinzuzufügen und die Ausgabe zu überprüfen, um sicherzustellen, dass das Skript das tut, was Siedenkenes tut es. Es ist durchaus möglich, dass Sie einige Annahmen oder Annahmen bezüglich Ihrer Laufzeitumgebung treffen, die sich in der Praxis nicht bewahrheiten.

verwandte Informationen