Mac OS

2013-12-11 16 views
7

ile Cron ile homebrew nasıl güncellenir günlük işlerimi otomatikleştirmek için bazı uzun ömürlü linux teknisyenleri ayırıyordum. Sistemimde bulunan bazı paketlerin güncellemelerini kontrol etmek için kullanabiliyorsanız çok güçlü olmak için cron'u buldum. Örneğin, Homebrew hergün saat 11'de güncelleştirmek istiyorum. Yaptığım şey, sudo crontab -u user -e ile Vim'de crontab'u açtım. Ve buna aşağıdaki komutları koydum, homebrew için güncellemeler yapmak ve bana bir e-posta yollamak.Mac OS

İşte kod:

[email protected] 
* 23 * * * brew update 

ve ben sihir için beklemek kaydedin. Onun yerine alınan e-postada, bu komutu excuting nedeniyle, /bin/sh: brew : command not found

diyor Ama brew update içinde sh ve türünü açmak için terminalde /bin/sh yazarken o Homebrew.

ben yanlış ne yaptım güncellenir benim crontab yapılandırması?

Herhangi bir yardım için teşekkür ederiz!

+2

"crontab" kullanımı, Darwin'de kullanımdan kaldırılmış gibi görünüyor (Mac OS X, Darwin'e dayanmaktadır). Bunun yerine 'launchd' kullanın. Bu birçok hızlı öğreticilerden biridir: http://alvinalexander.com/mac-os-x/mac-osx-startup-crontab-launchd-jobs – SimonSimCity

+1

11. saatin her dakikasını gerçekleştirmek istediğinizden emin değilsiniz ... Muhtemelen 11 ile 12 arasında bir çok e-posta alıyorsunuz. – mogga

cevap

5

Aynı fikri aldım ve bir cronjob iyi bir seçenek. Ancak, Mac'inize yüklenmiş bir formülün yeni bir sürümü mevcutsa sizi bilgilendirecek bir komut dosyası buldum. Otomatik olarak gerçekleşmesini istemedim. Bu da çalıştığı için,

o cron işi yazma konusunda https://gist.github.com/SimonSimCity/13832e2e03597a6be793, bir Launchd-ajan için gitmeye karar verdi:

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

Ben bildirimde bulunan sabitlenmiş formülleri göstermez senaryoyu uzatıldı Mac daha sonra başlatılırsa. Cron-işleri, eğer macunuz zaten o anda çalışıyorsa çalışır. launchd vs cronjob çevresindeki bazı yardım için

, bu veya benzer bir girişi okumanızı öneririz: http://alvinalexander.com/mac-os-x/mac-osx-startup-crontab-launchd-jobs

İşte benim yapılandırma var. Gördüğünüz gibi, her gün sabah 10 ve akşam 3'te çalışır. Aracı tarafından çağrılan komut dosyası, /usr/local/bin/homebrew-update-notifier adresinde bulunur.

<?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> 

Tebrikler! Yeni bir güncelleme mevcutsa şimdi bilgilendirileceksiniz.Güncelliğini düşünüyorsanız ya da komut dosyasına eklemeniz durumunda brew upgrade numaralı telefonu arayın;)

0

bash yapılandırmanızda muhtemelen bir sorun var. PATH'u, brew'un bulunduğu dizini içerecek şekilde ayarladığınızdan emin olun. ~/.profile'unuzda ayarlanmış olabilir, ancak ~/.bashrc numaralı telefon numaranızda ayarlandığından emin olun. Alternatif olarak,

16

Cron PATH tanımladınız vermez MAILTO, Daima muhtemelen budur /usr/local/bin/brew update

olan tam yol ile komutları çağırttırma set aynı şekilde sizin crontab bunu ayarlayabilirsiniz İstenmeyen/beklenmedik komutların çalışmasını engellemek için iyi uygulama sayılır. Birisi yolunuza başka bir yerde 'demlemek' denilen kötü niyetli bir betik koyarsa,/usr/local/bin'den önce, bunun yerine çağrılırdı.

+0

Teşekkürler @Donovan, bu işe yaradı. Şimdi "crontab" ı nereye kuracağımı biliyorum. çok teşekkürler –

+0

Rica ederim. Lütfen bunu cevaplandırırsanız lütfen cevaplayın. – Donovan