2017-10-27 5 views
1

laufen Ich habe den folgenden Eintrag in meinem crontab:Cron Job nicht ausgeführt, aber Befehl ist OK, wenn sie manuell auf der Shell-

0,30 7-18 * * 1-5 cd /path/to/scrapers && scrapy crawl funny_quotes &>> $(date "+/home/foobar/logs/\%Y\%m\%d.funny.log" 

Dieser Eintrag soll jede halbe Stunde laufen, an Wochentagen und fügen Sie den Ausgang in die Protokolldatei jedes Mal, wenn es ausgeführt wird. Ich habe die Syntax online mit this handy tool getestet und die Syntax ist korrekt.

Der Job wird jedoch nicht ausgeführt. Was noch schlimmer ist, die Protokolldatei wird erstellt (hat aber keinen Inhalt - Dateigröße 0), sodass ich keine Diagnoseinformationen haben muss.

Der Befehl cd /path/to/scrapers && scrapy crawl funny_quotes läuft perfekt, wenn ich es bei dem Befehl eintippe, und es gibt reichlich Informationen auf der Konsole, von scrapy.

Warum wird der Cronjob nicht erfolgreich ausgeführt - und warum wird nichts in die Protokolldatei geleitet?

+0

Ich nehme an, die Datei "funny_quotes" befindet sich in/path/to/scrapers. Hast du das in diesem Fall versucht? 'scrapy crawl/pfad/zu/scraper/funny_quotes & >> $ (datum" +/home/foobar/logs/\% Y \% m \% d.funny.log "' – mathB

+0

'& >>' ist Bash 4 Syntax, und ich frage mich, ob Ihr Cron-Job mit Bash 4 läuft. Versuchen Sie stattdessen mit guten altmodischen '2 >> Pfad 1> & 2'. – janos

Antwort

0

Überprüfen Sie Ihre Cron-Protokolle

grep CRON /var/log/syslog 

Ich bin sicher, dass Sie ähnliche Fehler so etwas wie scrapy - command not found oder etwas bekommen.

es zu beheben, tun dies

eingeben und die Ausgabe von echo $PATH von Shell kopieren.

Und dann offen crontab -e

An der Spitze der Datei schreiben PATH=YOUR_COPIED_CONTENTS

Und das sollte funktionieren.

Verwandte Themen