2013-12-11 18 views
7

zu aktualisieren Ich habe einige langlebige Linux-Technologien discverving, um meine tägliche Arbeit zu automatisieren. Ich fand cron sehr leistungsfähig, wenn ich es verwenden kann, um die Aktualisierungen einiger Pakete zu überprüfen, die ich auf meinem System habe., wie Homebrew mit Cron auf Mac OS

Zum Beispiel möchte ich meine Homebrew jeden Tag um 11 Uhr aktualisieren. Was ich getan habe, ist, mit sudo crontab -u user -e, öffnete ich crontab in Vim. 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:

[email protected] 
* 23 * * * brew update 

und ich spare es zu warten, Magie passiert. Statt Executing diesen Befehl, in der E-Mail Ich empfing, sagt es /bin/sh: brew : command not found

Aber wenn ich /bin/sh in Terminal-Typ sh und Typ öffnen in brew update wird es die Homebrew aktualisieren.

Was habe ich falsch gemacht mit meinem crontab Konfiguration?

Jede Hilfe wird geschätzt!

+2

Verwenden von 'Crontab' scheint auf Darwin veraltet (Mac OS X basiert auf Darwin). Verwenden Sie stattdessen 'launchd'. Dies ist eine von vielen schnellen Tutorials: http://alvinalexander.com/mac-os-x/mac-osx-startup-crontab-launchd-jobs – SimonSimCity

+1

nicht sicher, ob Sie jede Minute der 11. Stunde ausführen wollten ... Sie erhalten wahrscheinlich eine Menge von E-Mails zwischen 11 und 12 – mogga

Antwort

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.

http://chrisstreeter.com/archive/2012/08/homebrew-package-update-notifications-on-mountain-lion.html

I erweiterte das Skript nicht fixierten Formeln in den Anmelder zeigen: https://gist.github.com/SimonSimCity/13832e2e03597a6be793

Wenn es darum geht, den Cron-Job zu schreiben, habe ich beschlossen, für einen launchd-Agenten zu gehen, weil dies auch läuft wenn Mac später gestartet wird. Cron-Jobs laufen nur, wenn dein Mac zu diesem Zeitpunkt bereits aktiv ist.

Seit einiger Hilfe rund um cronjob vs launchd, empfehle ich diese oder eine ähnliche Einführung Lesen: http://alvinalexander.com/mac-os-x/mac-osx-startup-crontab-launchd-jobs

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.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>EnableGlobbing</key> 
    <false/> 
    <key>Label</key> 
    <string>homebrew.simonsimcity.update-notifier</string> 
    <key>ProgramArguments</key> 
    <array> 
     <string>/bin/bash</string> 
     <string>/usr/local/bin/homebrew-update-notifier</string> 
    </array> 
    <key>RunAtLoad</key> 
    <true/> 
    <key>StandardErrorPath</key> 
    <string>/tmp/homebrew.simonsimcity.update-notifier.err</string> 
    <key>StandardOutPath</key> 
    <string>/tmp/homebrew.simonsimcity.update-notifier.out</string> 
    <key>StartCalendarInterval</key> 
    <array> 
     <dict> 
      <key>Hour</key> 
      <integer>10</integer> 
      <key>Minute</key> 
      <integer>0</integer> 
     </dict> 
     <dict> 
      <key>Hour</key> 
      <integer>15</integer> 
      <key>Minute</key> 
      <integer>0</integer> 
     </dict> 
    </array> 
</dict> 
</plist> 

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

0

Wahrscheinlich stimmt etwas nicht mit Ihrer bash Konfiguration. Stellen Sie sicher, dass Sie die PATH so einstellen, dass sie das Verzeichnis enthält, in dem sich brew befindet. Sie können es in Ihrer setzen, aber stellen Sie sicher, dass es auch in Ihrem ~/.bashrc gesetzt ist. Alternativ könnten Sie es in Ihrem crontab auf die gleiche Weise stellen Sie setzen MAILTO

16

hat Cron PATH nicht definiert haben, stellen Sie sicher, dass Sie immer Befehle mit dem vollständigen Pfad nennen, die wahrscheinlich /usr/local/bin/brew update

Dieses ist Als bewährte Methode angesehen, dass unerwünschte/unerwartete Befehle nicht ausgeführt werden. Wenn jemand ein böswilliges Skript namens "brauen" an einer anderen Stelle in Ihrem Pfad, aber vor/usr/local/bin anbringt, wird es stattdessen aufgerufen.

+0

Dank @Donovan, dieser arbeitete. Jetzt weiß ich, wo ich meine "Crontab" konfigurieren soll. Vielen Dank –

+0

Gern geschehen. Bitte markieren Sie dies als beantwortet, wenn Sie bitte. – Donovan

Verwandte Themen