Warum funktioniert dieser Cronjob nicht?

1967
narzero

Ich habe ein Rubin-Skript in ~/custom_scripts/get_all_products.rb.

Ich möchte, dass es jeden Abend um 04:00 Uhr läuft.

So crontab -esieht der Cronjob aus:

MAILTO="<email>" 0 4 * * * ruby ~/custom_scripts/get_all_products.rb 

Aber es führt nicht aus.

Was soll ich als nächstes versuchen?

2
Haben Sie die E-Mail-Adresse in der Arbeitsversion ausgefüllt? Wenn ja, bekommen Sie E-Mails? Um cron zu debuggen, öffne ich normalerweise eine Datei, um Mini-Protokolleinträge aus dem Skript anzufügen und zu schreiben. Ich beginne mit einem gestarteten und beendeten Eintrag und gehe von dort aus. Sie können entweder die Zeilen entfernen, nachdem Sie Ihren Straßensperre herausgefunden haben, oder Sie sollten sie eher auskommentieren, falls ich sie jemals wieder brauche. Tyson vor 10 Jahren 0

2 Antworten auf die Frage

3
jjlin

Ich hatte in der Vergangenheit Probleme mit der Verwendung der Tilde-Erweiterung in Crontabs (dies war möglicherweise eine Unix-Variante außer Linux). Trotzdem würde ich empfehlen, $HOMEstatt zu verwenden ~.

Am besten geben Sie außerdem einen vollständigen Pfad zu Ihrer rubyausführbaren Datei an. Die PATHvon cron verwendet wird, ist oft nicht die, die Sie in Ihrer interaktiven Umgebung eingestellt haben (zB auf meinem System, das Cron PATHist gerade /usr/bin:/bin).

2
frlan

Ich denke, es gibt zwei Probleme, die Sie lösen müssen:

  1. ~ ist ein Shell-Synonym für $HOME. Sie sollten das in so etwas wie Cron verwenden
  2. $HOMEIst möglicherweise nicht richtig für Ihren Befehl eingestellt. crontab -eStandardmäßig wird die Crontab-Datei von root bearbeitet. Keiner Ihrer Benutzer. Ersetzen Sie nur ~ und $HOMEdurch absoluten Pfad.
Möglicherweise suchen Sie nach 'Crontab -e -u `crontab des Benutzers definieren. frlan vor 10 Jahren 0
Gibt es zusätzliche Pfade für Sie? Denken Sie daran, Sie haben hier keine Login-Shell. frlan vor 10 Jahren 0
Nicht dass ich wüsste, wie überprüfe ich? narzero vor 10 Jahren 0
Warum läufst du das als root? WTH Überprüfen Sie jedoch mit `set` frlan vor 10 Jahren 0
Weil ich will. narzero vor 10 Jahren 0
Lassen Sie uns [diese Diskussion im Chat fortsetzen] (http://chat.stackexchange.com/rooms/16997/discussion-between-narzero-and-frlan). narzero vor 10 Jahren 0