wie Homebrew mit Cron auf Mac OS zu aktualisieren

7

Ich habe einige langlebige Linux-Techniker gefunden, um meine tägliche Arbeit zu automatisieren. Ich fand cron sehr mächtig, wenn ich damit die Updates einiger Pakete auf meinem System überprüfen kann.

Zum Beispiel möchte ich mein Homebrew jeden Tag um 23 Uhr aktualisieren. Was ich getan habe ist, dass ich mit sudo crontab -u user -e in Vim crontab geöffnet habe. Und ich habe folgende Befehle eingefügt, um Updates für homebrew zu machen und mir eine E-Mail zu schicken.

Hier ist der Code:

%Vor%

und ich speichere es, um auf Magie zu warten. Anstatt diesen Befehl auszuführen, heißt es in der E-Mail, die ich erhalten habe: /bin/sh: brew : command not found

Aber wenn ich /bin/sh im Terminal eintippe, um sh zu öffnen und brew update einzutippen, wird die Homebrew aktualisiert.

Was habe ich mit meiner crontab Konfiguration falsch gemacht?

Jede Hilfe wird geschätzt!

    
Ian Zhao 11.12.2013, 19:31
quelle

3 Antworten

5

Ich hatte die gleiche Idee und ein Cronjob ist eine gute Option. Ich habe jedoch ein Skript gefunden, das Sie benachrichtigt, wenn eine neue Version einer auf Ihrem Mac installierten Formel verfügbar ist. Ich wollte nicht, dass es automatisch passiert.

Ссылка

Ich habe das Skript so erweitert, dass im Notifier keine gepinnten Formeln angezeigt werden: Ссылка

Wenn es darum geht, den Cron-Job zu schreiben, habe ich mich für einen launchd-Agenten entschieden, weil dieser auch ausgeführt wird, wenn Mac später gestartet wird. Cron-Jobs laufen nur, wenn Ihr Mac zu diesem Zeitpunkt bereits aktiv ist.

Für einige Hilfe rund um Cronjob vs Launchd, empfehle ich, diese oder eine ähnliche Einführung zu lesen: Ссылка

Hier ist meine Konfiguration. Es läuft, wie Sie sehen können, jeden Tag um 10 und 15 Uhr. Das Skript, das vom Agenten aufgerufen wird, befindet sich unter /usr/local/bin/homebrew-update-notifier .

%Vor%

Glückwunsch! Sie werden nun benachrichtigt, wenn ein neues Update verfügbar ist. Rufen Sie einfach brew upgrade an, wenn Sie sich veraltet fühlen, oder fügen Sie sie auch in das Skript ein;)

    
SimonSimCity 03.09.2014, 07:52
quelle
16

In Cron ist Ihr PATH nicht definiert. Stellen Sie sicher, dass Sie immer Befehle mit dem vollständigen Pfad aufrufen, was wahrscheinlich /usr/local/bin/brew update

ist

Dies wird als bewährte Methode angesehen, um die Ausführung unerwünschter / unerwarteter Befehle zu verhindern. Wenn jemand ein böswilliges Skript namens 'brauen' an einer anderen Stelle in Ihrem Pfad platziert, aber vor / usr / local / bin, wird es stattdessen aufgerufen.

    
Donovan 11.12.2013 19:53
quelle
0

Wahrscheinlich stimmt etwas nicht mit Ihrer bash -Konfiguration. Stelle sicher, dass du PATH so gesetzt hast, dass sie das Verzeichnis enthält, in dem brew ist. Du kannst es in deinem ~/.profile setzen, aber stell sicher, dass es auch in deinem ~/.bashrc gesetzt ist. Alternativ können Sie es in Ihrer crontab auf die gleiche Weise festlegen, wie Sie MAILTO

festgelegt haben     
Eric 11.12.2013 19:44
quelle

Tags und Links