2013-12-11 11 views
7

पर क्रॉन के साथ होमब्रू को कैसे अपडेट करें मैं अपने दैनिक काम को स्वचालित करने में मदद के लिए कुछ लंबे समय तक चलने वाले लिनक्स तकनीक को डिस्कवर कर रहा हूं। मुझे cron बहुत शक्तिशाली होने के लिए मिला है यदि मैं अपने सिस्टम पर मौजूद कुछ पैकेजों के अपडेट की जांच करने के लिए इसका उपयोग कर सकता हूं।मैक ओएस

उदाहरण के लिए, मैं रोजाना 1112 बजे अपना Homebrew अपडेट करना चाहता हूं। मैंने क्या किया है, sudo crontab -u user -e के साथ, मैंने विम में crontab खोला। और मैंने homebrew के लिए अपडेट करने और मुझे एक ईमेल भेजने के लिए निम्न आदेश दिए हैं।

कोड यह रहा:

[email protected] 
* 23 * * * brew update 

और मैं जादू होता है के लिए यह प्रतीक्षा करने के लिए बचाने के लिए। इसके बजाय ईमेल मैं प्राप्त में इस आदेश excuting, की, यह कहते हैं /bin/sh: brew : command not found

लेकिन जब मैं टर्मिनल में /bin/sh टाइप brew update में sh और प्रकार को खोलने के लिए यह Homebrew

मैं के साथ गलत क्या था अद्यतन करेगा मेरी crontab विन्यास?

किसी भी मदद की सराहना की जाएगी!

+2

'क्रोंटब' का उपयोग करना डार्विन (मैक ओएस एक्स डार्विन पर आधारित है) पर बहिष्कृत लगता है। इसके बजाए 'launchd' का प्रयोग करें। यह कई त्वरित ट्यूटोरियल में से एक है: http://alvinalexander.com/mac-os-x/mac-osx-startup-crontab-launchd-jobs – SimonSimCity

+1

यह सुनिश्चित नहीं है कि आप 11 वें घंटे के हर मिनट को निष्पादित करना चाहते हैं ... आपको शायद 11 और 12 – mogga

उत्तर

5

मेरे पास एक ही विचार था और एक cronjob एक अच्छा विकल्प है। हालांकि, मुझे एक स्क्रिप्ट मिली, जो आपको सूचित करेगी, अगर आपके मैक पर स्थापित सूत्र का नया संस्करण उपलब्ध है। मैं नहीं चाहता था कि यह स्वचालित रूप से हो। , https://gist.github.com/SimonSimCity/13832e2e03597a6be793

यह क्रॉन जॉब लेखन की बात आती है, मैं एक launchd एजेंट के लिए जाने का फैसला किया, क्योंकि यह भी चलाता है:

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

मैं स्क्रिप्ट सूचक में पिन किए गए फार्मूले नहीं दिखाने के लिए बढ़ाया अगर मैक बाद में शुरू किया गया है। क्रॉन-जॉब्स सिर्फ तब चलते हैं जब आपका मैक उस समय पहले से चल रहा हो।

launchd बनाम cronjob के आसपास कुछ मदद के लिए, मैं इस या किसी ऐसे ही परिचय पढ़ने की सलाह देते: http://alvinalexander.com/mac-os-x/mac-osx-startup-crontab-launchd-jobs

यहाँ मेरी विन्यास है। यह चलता है, जैसा कि आप देख सकते हैं, हर दिन 10 बजे से शाम 3 बजे। एजेंट द्वारा बुलाया गया स्क्रिप्ट /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> 

बधाई हो! यदि कोई नया अपडेट उपलब्ध है तो आपको अब अधिसूचित किया जाएगा।अगर आप पुरानी महसूस करते हैं, या इसे स्क्रिप्ट में भी शामिल करते हैं तो बस brew upgrade पर कॉल करें;)

0

शायद आपके bash कॉन्फ़िगरेशन में कुछ गड़बड़ है। सुनिश्चित करें कि आप PATH सेट करें ताकि इसमें निर्देशिका brew है। आप इसे अपने ~/.profile में सेट कर सकते हैं लेकिन यह सुनिश्चित कर लें कि यह आपके ~/.bashrc में भी सेट है। वैकल्पिक रूप से, आप उसी तरह आप सेट MAILTO

16

क्रॉन अपने पथ को परिभाषित किया है नहीं करता है, यकीन है कि तुम हमेशा पूरा पथ, जो संभवत: /usr/local/bin/brew update

यह है के साथ आदेशों फोन बनाने में अपनी crontab में यह सेट कर सकते हैं अवांछित/अप्रत्याशित आदेशों को चलने से रोकने के लिए अच्छा अभ्यास माना जाता है। अगर किसी ने आपके पथ में कहीं और 'ब्रू' नामक एक दुर्भावनापूर्ण स्क्रिप्ट डाली है, लेकिन पहले/usr/local/bin से पहले, इसे इसके बजाय बुलाया जाएगा।

+0

धन्यवाद @ डोनोवैन के बीच बहुत सारे ईमेल मिल रहे हैं, यह एक काम करता है। अब मुझे पता है कि मेरे 'crontab' को कॉन्फ़िगर करना है। बहुत धन्यवाद –

+0

आपका स्वागत है। अगर आप कृपया उत्तर दें तो कृपया इसे चिह्नित करें। – Donovan