मैक ओएस एक्स पर हर दिन चलाने के लिए मुझे एक स्क्रिप्ट कैसे मिल सकती है?


63

क्रॉन? Launchd? iCal ??

यदि हां, तो कैसे?


1
यहाँ Apple की लॉन्चिंग वरीयता फाइलों को लिखने की बारीकियों के बारे में बताया गया है: developer.apple.com/mac/library/DOCUMENTATION/Darwin/Reference/…
पॉल डी। वेट

जवाबों:


62

संदर्भ के लिए, सभी 3 विकल्प काम करेंगे। हालांकि iCal विकल्प में अन्य की तुलना में अधिक सीमाएँ हैं।

(क्रोन और लॉन्च के संपादन के लिए GUI हैं जैसा कि अन्य उत्तरों में वर्णित है)

क्रोन सबसे सीधे आगे और अच्छी तरह से जाना जाता है और कई ट्यूटोरियल उपलब्ध हैं। कोल्स नोट्स को नीचे की ओर से अंतिम पंक्ति को अपने क्रॉस्टैब पर जोड़ना होता है (या तो संपादन /etc/crontabया crontabकमांड लाइन पर उपयोग करके ):

MM HH DD MM WKD -- Minutes, Hour, Day, Month, Weekday (eg. Sun, Mon)
MM HH * * * USERNAME /PATH/TO/SCRIPT
00 3 * * * chealion /myscript.sh "Runs at 03:00 every day"

मैक ओएस एक्स में, cronवास्तव में द्वारा प्रतिस्थापित किया गया है, launchdलेकिन launchdबैकवर्ड संगत है cronजिसका अर्थ है कि आप अभी भी उपयोग कर सकते हैं cronलेकिन यह वास्तव में launchdसभी काम कर रहा है।

यदि आप उपयोग करना चाहते हैं तो आप launchdसुपर यूजर के यहाँ भी अन्य प्रश्नों की जाँच करना चाहेंगे: (उदाहरण के लिए मैं रूट कमांड को रूट के रूप में कैसे चलाऊँ? ) जहाँ आप अपनी कॉन्फ़िगरेशन फ़ाइल (प्लिस्ट फ़ाइल) को सहेजना चाहते हैं। जब यह चलता है तो यह निर्भर करता है कि यह किस निर्देशिका में संग्रहीत है और इसे कैसे लोड किया गया है (जैसे। आपने sudo का उपयोग किया है या नहीं) - cron के समान।

एक नमूना दैनिक लॉन्चड प्लिस्ट चलाएं (सुनिश्चित करें कि फ़ाइल और लेबल समान हैं - लेबल के लिए प्लिस्ट माइनस) इस प्रकार है - यह स्क्रिप्ट रोज आधी रात को 3 मिनट पर चलती है:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>local.IDENTIFIER_HERE.SOMETHING</string>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <false/>
    <key>UserName</key>
    <string>USERNAME HERE</string>
    <key>Program</key>
    <string>/PATH/TO/SCRIPT</string>
    <key>ProgramArguments</key>
    <array>
        <string>Argument_1</string>
        <string>Argument_2</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>00</integer>
        <key>Minute</key>
        <integer>03</integer>
    </dict>
</dict>
</plist>

यह भी ध्यान देने योग्य बात है कि लॉन्च किए गए कार्य यदि वे तब निर्धारित किए जाते हैं जब कंप्यूटर सो या बंद होता है, तो वे तब चलेंगे जब कंप्यूटर फिर से उपलब्ध हो जाएगा (इसे चालू करना या इसे जागृत करना) - हालांकि केवल एक बार कोई फर्क नहीं पड़ता कि कितने दिन हो सकते हैं किया गया। संपादित करें: मैं बस एक Apple दस्तावेज़ में था, जिसमें कहा गया था कि यदि मशीन बंद है, तो आप उस दौरान किसी भी लॉन्च की घटनाओं को खो देंगे, (आपकी स्क्रिप्ट स्टार्टअप पर लॉन्च नहीं होगी), (नींद जागने पर स्क्रिप्ट लॉन्च करती है)


एक अन्य विकल्प " एट " ("मैन एट" के साथ मैनुअल पेज की जांच करना) है। स्क्रिप्ट उदाहरण के साथ खुद को पुनर्निर्धारित कर सकती है:

echo "sh $0 $@" | at `date +%H:%M` tomorrow

(हर 10 मिनट इसे चलाने के लिए "कल" ​​के बजाय "+ 10 मिनट" का उपयोग करें; शेड्यूलिंग को रोकने के लिए, अनुसूचित नौकरी आईडी को सूचीबद्ध करने के लिए "-एल" करें और फिर नौकरी निकालने के लिए " -आर आईडी ")

आपको इसके साथ पहले डेमन (अटरुन) शुरू करना होगा (देखें https://superuser.com/a/43680 ):

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

लाभ: त्वरित फिक्स, कोई सुडोल / रूट एक्सेस की आवश्यकता, जटिल शेड्यूल पैटर्न को करना आसान है नुकसान: ओएस एक्स (जो लॉन्च किया गया है) के लिए मानक समयबद्धन विधि नहीं


8
महोदय, अपने उदाहरण launchd विन्यास फाइल के लिए, मैं कर सकता है चुंबन आप। लेकिन मैं नहीं।
पॉल डी। वेट

5
launchdOS X के नीचे जाने का रास्ता है।
zneak

हाँ, यह मेरी धारणा थी। ऐसा लगता है कि यह टाइगर में कुछ मुद्दों पर वापस आ गया था, लेकिन लगता है कि Apple ने तब से इसे तेज कर दिया है।
पॉल डी। वेट

Os 10.7.4 पर कोई / etc / crontab फ़ाइल नहीं है। ): तो मैंने 'कौन-सा क्रॉस्टैब' किया और उसने मुझे / usr / bin / crontab दिया, लेकिन एक गड़बड़ फाइल है।
हरमन इंग्लैड्ससन

@ हरमनइंजलड्सन / usr / बिन / crontab एक कार्यक्रम है; यदि आप इसे किसी टर्मिनल में चलाते हैं crontab -e, तो यह आपको एक टर्मिनल-आधारित टेक्स्ट एडिटर में एक फाइल पर छोड़ देगा, जो आपके सेव करते ही आपका पर्सनल कॉन्टैब बन जाएगा।
मार्क रीड

8

लॉन्चकंट्रोल लॉन्चड / लॉन्चक्टल के लिए एक और जीयूआई है। जबकि अन्य लोगों द्वारा बताए गए विकल्प दैनिक आधार पर एक स्क्रिप्ट लॉन्च करने में पूरी तरह से सक्षम हैं, लॉन्चकंट्रोल के साथ आप जटिल शेड्यूल को कॉन्फ़िगर कर सकते हैं (जैसे "हर सप्ताह एक बार, सप्ताहांत पर 2 बजे और 8 बजे के बीच")। इसके अलावा यह (AFAIK) एकमात्र उपकरण है जो वास्तव में कार्य को मान्य करता है। यदि कोई नौकरी उम्मीद के मुताबिक काम नहीं करती है तो यह आपको दिखाएगी कि क्यों।

जब तक आप चाहें, तब तक यह कोशिश करने के लिए स्वतंत्र है।


3
हालांकि यह कोशिश / उपयोग करने के लिए स्वतंत्र है, डेवलपर आपको लाइसेंस के लिए भुगतान करना पसंद करेगा। sites.fastspring.com/somazone/product/shop
केंट

1
पूर्ण रूप से। इस कारण से कि मैंने पहली बार में यह उत्तर पोस्ट किया था, डेवलपर का समर्थन करना था।
मार्क हॉल

5

CronniX मैक पर क्रोन नौकरियों का समय निर्धारण करने के लिए एक अच्छा जीयूआई दृश्य है ... बहुत सभ्य अगर आप जाना नहीं चाहते हैं और क्रोन प्रलेखन में तल्लीन करना चाहते हैं।


2
  • ICal के लिए आप इस लेख को पढ़ना चाह सकते हैं ।
  • cronयदि आप इसके लिए गूगल करते हैं तो आपको पर्याप्त ट्यूटोरियल ढूंढने चाहिए ।

यह इस बात पर निर्भर करता है कि आप क्या चाहते हैं: iCal स्क्रिप्ट केवल तभी निष्पादित की जाएगी जब आप लॉग इन हैं, cronस्क्रिप्ट को लॉग इन किए बिना निष्पादित करता है। मुझे नहीं पता कि क्या iCal स्क्रिप्ट को निष्पादित करता है अगर मैक स्क्रिप्ट के समय में बदल गया था। निष्पादित किया गया। cronयह कर रहा है।



2

यहाँ एक सरल, नि: शुल्क उपयोगिता है XML उत्पन्न करने के लिए:

http://www.gieson.com/Library/projects/utilities/launcha/

इस उपयोग के साथ, प्रोग्राम स्थापित करने की कोई आवश्यकता नहीं है, बस अपने लाइब्रेरी / LaunchAgents फ़ोल्डर में परिणाम सहेजें।


चेतावनी: यदि आप इस उपकरण का उपयोग करते हैं, तो सुनिश्चित करें कि RunAtStartतब गलत पर सेट किया गया है (जब तक कि आप इसे सच नहीं चाहते)। मैंने एक घंटे का समय बिताया कि मेरे खोजकर्ता फ्रीज क्यों करेगा और डेस्कटॉप को बूट पर लोड करने से रोक देगा। डिसेबल RunAtStartशेड्यूल में हस्तक्षेप नहीं करता है।
एंड्रिया लज्जाज़ारो

1

मैं हमेशा इसके लिए लिंगोन का उपयोग करता हूं , लेकिन ऐसा लगता है कि यह विकास से बाहर है। आप Crontooie की कोशिश कर सकते हैं , लेकिन मैंने इसे व्यक्तिगत रूप से उपयोग नहीं किया है। या बस टर्मिनल में crontab फ़ाइल को संपादित करें।


ऐसा लगता है कि लिंगोन सक्रिय विकास के अधीन है ; वर्तमान संस्करण 3 पिछले संस्करण 2 के साथ AppStore में उपलब्ध है। दोनों कुछ डॉलर की लागत और बहुत मिश्रित समीक्षा प्राप्त करते हैं। मैं व्यक्तिगत रूप से कुछ सफलता के साथ लिंगोन 3 का उपयोग करता हूं , लेकिन अन्य उत्तर (क्रोन, एट, आदि) में उल्लिखित अन्य उपकरणों पर इस लेख में उद्देश्य के लिए इसकी सिफारिश नहीं करेगा।
एसएनएस

पिछली बार जब मैंने 2 साल पहले लिंगोन का इस्तेमाल किया था। उस समय यह मेरे लिए ठीक था, लेकिन मैंने हाल के छंदों का उपयोग नहीं किया है। बहुत बुरा यह उतना विश्वसनीय नहीं है जितना एक बार था।
जोश


0
sp@mactop ~ $ crontab -l
*/5 * * * * /usr/local/bin/cinco.sh
sp@mactop ~ $ cat /usr/local/bin/cinco.sh
#!/bin/sh
....cut....
sp@mactop ~ $ 

... जो भी कमांड-लाइन आप ".... कट ...." के लिए फेंकते हैं, उन्हें हर पांच मिनट में चलाया जाएगा।

30 साल की प्रगति, और 'क्रोन' अभी भी मेरा पसंदीदा शेड्यूलर है।

-सी


0

यदि कोई कैलेंडर ईवेंट आपकी आवश्यकताओं को पूरा करता है, तो अंतर्निहित ऑटोमैटिक एप्लिकेशन आपको कैलेंडर अलार्म बनाने देता है जो कैलेंडर ईवेंट द्वारा ट्रिगर होते हैं। आप जो चाहते हैं उसे करने के लिए कुछ अंतर्निहित यूआई-आधारित कार्यों का उपयोग कर सकते हैं, या आप इसे कुछ एप्लिकेशन या कस्टम AppleScript, जावास्क्रिप्ट, या शेल स्क्रिप्ट भी चला सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.