Wie richte ich unter OS X einen Cron-Job ein, um jeden Tag zu einer bestimmten Zeit einen Curl-Befehl auszuführen?


20

Ich habe einen CURL-Befehl, den ich jeden Tag um 3 Uhr morgens ausführen möchte, aber ich bin mir nicht sicher, wie ich das einrichten soll, und die Guides sind alle komisch.

Angenommen, ich habe viel Terminal- / Bash-Erfahrung, aber noch nie zuvor einen Cron eingerichtet.

Ist es möglich, dass der Cron-Job meinen Computer aufweckt, auch wenn er schläft und der Deckel geschlossen ist (MacBook Pro), nur um diesen einen Curl-Befehl auszuführen und ihn dann wieder einzuschalten?

Wie richte ich es so oder so ein?

Antworten:


22

Führen Sie zunächst den folgenden Befehl aus:

crontab -e

Dadurch wird die Crontab für Ihren Benutzer in einem Texteditor geöffnet. Cron verwendet eine bestimmte Notation für geplante Jobs. Das folgende Format zeigt die Felder für einen Benutzer-Crontab-Eintrag (die durch Tabulatoren getrennt werden müssen).

min  hour  day_of_month  month  day_of_week  command

Um einen Curl-Befehl so zu planen, dass er täglich um 3 Uhr morgens ausgeführt wird, können Sie die folgende Zeile einfügen:

0  3  *  *  *  curl args...

Beachten Sie, wie die Minuten und Stunden 3 Uhr morgens entsprechen (Randnotiz: cron verwendet das 24-Stunden-Zeitformat, kein Vormittag oder Nachmittag). Die folgenden Sternchen bedeuten jeden Tag des Monats, jeden Monat, jeden Wochentag.

Cron ist nicht in der Lage, Ihren Computer aus dem Ruhezustand aufzuwecken, aber Sie finden diesen Beitrag möglicherweise hilfreich, um osx aus dem Ruhezustand aufzuwecken


1
Wenn ich das tue, crontab -esehe ich dies in meinem Terminal: $ crontab -e crontab: no changes made to crontabund dann öffnet es meinen Texteditor mit der Datei crontab.some-random-stringaus dem Ordner /tmp. Sobald ich das bearbeite und speichere, passiert nichts mehr in meinem Terminal. Wenn ich das tue crontab -l, ich der Job gerade eingegeben wird nicht angezeigt. Wenn ich es dann crontab -eerneut tue , wird ein weiteres Leerzeichen geöffnet crontab.some-random-string. Ich habe auch die erste Crontab getestet, die ich gespeichert habe, indem ich die Zeit auf 2 Minuten eingestellt habe, nachdem ich sie gespeichert habe und der Cron nie lief. Was könnte los sein?
Marcamillion

Welcher Texteditor wird geöffnet, wenn Sie 'crontab -e' ausführen?
diametralpitch

Mein Standard ein, atom. Das wird gestartet, wenn ich in meinem Terminal etwas öffne, das bearbeitet werden soll. Das ist , was ich habe in meinem ~/.bash_profile, export EDITOR='open -a "/Applications/Atom.app"'.
Marcamillion

Hmm, wenn Sie atom von der Befehlszeile aus ausführen, wartet es auf das Beenden von atom, bevor es nach einem anderen Befehl fragt (wenn nicht, möchten Sie möglicherweise einen anderen Texteditor verwenden).
Adam Luchjenbroers

@AdamLuchjenbroers Ich bin nicht sicher, ob ich Ihre Frage vollständig verstehe. Ich benutze Atom für alle meine Code-Bearbeitung. Wenn ich also eine Datei bearbeiten möchte, mache ich das einfach atom .im Verzeichnis oder atom <filepath>.
Marcamillion

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.