Ich habe folgende Bash-Skript:Ausgang nicht Datei gehen, wenn sie als Cron-Job lief
clean-tmp.sh
#!/bin/bash
tmpreaper 1h /tmp --test > ./tmpreaper.log
Als ich es im Terminal laufen ./clean-tmp.sh
verwenden, ist es schreibt in die Datei ./tmpreaper.log
.
habe ich das Skript in die Liste der Cron-Jobs crontab -e
mit:
*/5 * * * * cd /home/cron-jobs && ./clean-tmp.sh
ich dann cron die Protokolle geprüft und ist der Eintrag dort alle 5 Minuten:
Feb 19 00:45:01 ip-172-31-23-184 CRON[1475]: (ubuntu) CMD (cd /home/cron-jobs && ./clean-tmp.sh)
Aber es ist nicht mehr Schreiben an ./tmpreaper.log
.
Was um alles in der Welt mache ich falsch?
Sind Sie sicher, dass die 'cd' erfolgreich ist? Dies ist ein Ort, an dem exec 2 >>/tmp/err.log; Satz -x; cd/home/cron-jobs &&./clean- tmp.sh' wäre nützlich (oder sogar 'bash -x./clean-tmp.sh'). –
Das Schreiben in eine Datei unter Verwendung des relativen Pfads ist keine große Programmierpraxis. Im Allgemeinen ist es nicht gut, wenn ein Skript davon ausgeht, dass das aktuelle Arbeitsverzeichnis korrekt eingestellt ist. Vielleicht möchten Sie einen Blick auf diesen Beitrag werfen: http://stackoverflow.com/questions/41755437/managing-log-file-created-by-cron-jobs – codeforester
BTW, die übliche Ursache für diese Art von Problem ist 'tmpreaper 'nicht in Cron's PATH. Wenn es zum Beispiel in '/ usr/local/bin' ist, ist das nicht standardmäßig vorhanden. –