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?

marcamillion
quelle

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

diametralpitch
quelle
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
0

Wenn Sie es auf GUI-Weise tun möchten, kann ich Ihnen CronniX von roaringapps https://roaringapps.com/app/cronnix empfehlen

konqui
quelle
Danke für diesen Tipp ... aber ich denke, ich würde es vorziehen, es manuell über die Befehlszeile oder über einen Texteditor zu lernen :)
marcamillion