क्या कोई लिखने (स्क्रैच से) के लिए एक अच्छे ट्यूटोरियल की सिफारिश कर सकता है?


19

मुझे काफी सरल काम मिला है जिसे मैं हर घंटे चलाना चाहूंगा। मैं इसका उपयोग कर सकता cronथा, लेकिन मैंने सोचा कि मैं इसके बारे में जानने के लिए इसका उपयोग launchdकरूंगा, क्योंकि मैं इसके बारे में अच्छी बातें सुनता हूं। मुझे man launchd.plistएक संदर्भ के रूप में पृष्ठ मिला है , लेकिन मैं एक उदाहरण के काम के निर्माण के आसपास कुछ और खोज रहा हूं।


इसे स्टैकओवरफ़्लो में स्थानांतरित किया जाना चाहिए।
फिलिप रेगन

5
@Philip Regan मैंने इसके बारे में सोचा था, लेकिन मेरे लिए वास्तव में बहुत प्रोग्रामिंग शामिल नहीं है। अगर मैं एक cronसवाल पूछ रहा होता , तो superuser.com सही जगह नहीं होता? चूंकि launchdApple cron(और भी daemontools, और संभवतः अन्य चीजों का) संस्करण है , मैंने सोचा कि यह मेरा सबसे अच्छा विकल्प था।
हांक गे

आप इसे एक स्वचालक स्क्रिप्ट में भी डाल सकते हैं और iCal से चला सकते हैं - अगर यह आपके अनुसार चलता है
user151019

एक अजीब सा विडंबना में, तीन साल बाद मुझे खुद क्रोन / लॉन्च प्रक्रिया को लागू करने की आवश्यकता है और खुद को इस प्रश्न को फिर से पूरी तरह से अलग रोशनी में देखते हुए पाया। स्टैक ओवरफ्लो में लॉन्च किए गए सवालों के साथ क्या करना है, इस बारे में मिश्रित राय है, लेकिन वे वास्तव में इन सवालों को पसंद नहीं करते हैं। बस लगा कि पूरी स्थिति चकित कर रही है। +1
फिलिप रेगन

जवाबों:


14

launchdDaemons ( /Library/LaunchDaemonsया /System/Library/LaunchDaemons) को रूट के रूप में चलाता है , और चाहे उपयोगकर्ता लॉग इन हों या न हों, उन्हें चलाएंगे। लॉन्च एजेंटों ( /Library/LaunchAgents/या ~/Library/LaunchAgents/) जब कोई उपयोगकर्ता है कि उपयोगकर्ता के रूप में लॉग ऑन है चलाए जा रहे हैं। डेमॉन पर स्क्रिप्ट चलाने वाले उपयोगकर्ता को बदलने के लिए आप सेतु का उपयोग नहीं कर सकते। /Systemनिर्देशिका मैक ओएस एक्स कार्यों के लिए आरक्षित है तो मैं अपने डालने की सलाह देते हैं launchdया तो में plists /Libraryया ~/Libraryफ़ोल्डर के रूप में यह समझ में आता है।

यदि आप एक एजेंट या डेमॉन बना रहे हैं तो पहला कदम यह निर्धारित करना है।

दूसरा चरण आपकी .plistफ़ाइल बनाने का है । आप इसकी मदद करने के लिए या अपने पसंदीदा पाठ संपादक का उपयोग करने के लिए लिंगोन जैसे GUI- आधारित कार्यक्रमों का उपयोग कर सकते हैं :

.plistहर घंटे एक स्क्रिप्ट चलाने के लिए एक नमूना ( StartIntervalया StartIntervalCalendarहम जो कुंजी चाहते हैं - StartIntervalएक आइटम के लिए हर xसेकंड के लिए, StartIntervalCalendarएक विशिष्ट समय और / या तारीख के लिए। सुपर यूज़र पर 126907 देखें उदाहरण के लिए मैंने StartCalendarInterval के साथ बनाया है):

<?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>OnDemand</key>
    <true/>
    <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>StartInterval</key>
    <integer>3600</integer>
</dict>
</plist>

.plistअपनी स्क्रिप्ट को इंगित करने के लिए आवश्यक और किसी भी तर्क को आवश्यक रूप से संशोधित करें (तर्क अलग-अलग लाइनों पर हैं) और फ़ाइल को लेबल मान के समान नाम के साथ सहेजें लेकिन .plistअंत में। (उदाहरण के लिए, के local.my-mac.flickrstatsरूप में सहेजा जाएगा local.my-mac.flickrstats.plist)। यदि आप पहले से नहीं है, तो डेमन बनाते समय उस .plistफ़ाइल को स्थानांतरित करें /Library/LaunchDaemons(हर समय चलाता है) या ~/Library/LaunchAgents(केवल आप लॉग इन हैं) या /Library/LaunchAgents(कोई भी उपयोगकर्ता लॉग इन है)।

वह काम शुरू करने के लिए जिसे आप launchctlफ़ाइल लोड करने के लिए आवश्यक चलाना चाहते हैं । में आइटम के लिए /Library, आपको sudo का उपयोग करना चाहिए: उदाहरण के लिए,sudo launchctl load -w /PATH/TO/PLIST

संदर्भ के लिए सुपर यूजर पर निम्नलिखित प्रश्नों को भी देखें: रूट के रूप में लॉन्च कमांड , एक सिस्टम वाइड डेमॉन लोड करें , और मुझे हर दिन चलाने के लिए एक स्क्रिप्ट कैसे मिल सकती है


4

मुझे पता है कि यह एक अच्छा ट्यूटोरियल नहीं है , लेकिन आप Apple के Daemons और Services Programming Guide पर नज़र डाल सकते हैं , जिसमें शेड्यूलिंग टाइमिंग जॉब्स पर एक सेक्शन है।

मुझे पता है कि यह एक पूर्ण ट्यूटोरियल नहीं है, लेकिन, इसके साथ, आप मूल बातें समझ सकते हैं launchd

यह एक crondकार्य का एक उदाहरण भी प्रदान करता है :

<?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>com.apple.periodic-daily</string>
    <key>ProgramArguments</key>
    <array> 
        <string>/usr/sbin/periodic</string>
        <string>daily</string>
    </array>
    <key>LowPriorityIO</key>
    <true/>
    <key>Nice</key>
    <integer>1</integer>
    <key>StartCalendarInterval</key>
    <dict>  
        <key>Hour</key>
        <integer>3</integer>
        <key>Minute</key>
        <integer>15</integer>
    </dict>
</dict>
</plist>

मैंने नीचा दिखाया क्योंकि आपने स्वीकार किया था कि संसाधन मैंने नहीं मांगे हैं और इसने मुझे थोड़ा आरटीएफएम के रूप में मारा है, लेकिन मैंने इसे पुनर्विचार किया है और मैं अपने डाउनवोट को फिर से बनाना चाहूंगा। दुर्भाग्य से मैं तब तक नहीं कर सकता जब तक कि प्रश्न संपादित नहीं किया गया (यह बहुत लंबा हो चुका है), और मेरे पास संपादित करने के लिए अभी तक पर्याप्त प्रतिनिधि नहीं है। क्या आप कुछ ट्विक कर सकते हैं? धन्यवाद।
हांक गे

@ हंक गे: आपकी टिप्पणी के लिए धन्यवाद। मैंने अपना उत्तर भी संपादित किया।
अध्ययनकर्ता

4

इससे मुझे बहुत मदद मिली है: http://launchd.info

यह टर्मिनल या लॉन्च GUI LaunchControl का उपयोग करके कॉन्फ़िगरेशन, प्रशासन और समस्या निवारण शामिल करता है । उदाहरण भी दिए गए हैं।


2

मुझे पता है कि आप एक ट्यूटोरियल की तलाश कर रहे थे, लेकिन ऑफ-चांस पर किसी को यहां लॉन्च एंट्रीज बनाने / संपादित करने में मदद करने के लिए एक टूल की तलाश में आता है, मैंने पहले भी इसका उपयोग किया है: लिंगोन ( सोर्सफोर्ज )

यह अब सक्रिय रूप से विकसित नहीं हो रहा है, लेकिन वहाँ क्या काम करता है (और जाहिर है कि स्रोत आदि शामिल हैं)। मैंने इसे अमेजन क्लाउड पर बैकअप शेड्यूल करने के लिए स्नो लेपर्ड पर इस्तेमाल किया है, आदि।


लिंगोन अब ऐप स्टोर में है इसलिए अभी भी सक्रिय नहीं है बस मुफ्त में देखें < peterborgapps.com/lingon >
user151019

Appstore संस्करण Apple नीति आवश्यकताओं से अपंग हो गया है। SourceForge पूर्व-संकलित संस्करण अच्छी तरह से काम करता है - हालांकि मोडल डायलॉग सेव पर, मुझे लॉग आउट करने या पुनः आरंभ करने के लिए कह रहा है ताकि डेमॉन खारिज न हो सके। मुझे इसे मेनू से प्रोग्राम छोड़ना पड़ा (न कि बलपूर्वक छोड़ना) और यह पुष्टि करने के लिए जांचें कि उसने फ़ाइल को ठीक से सहेजा था। उस फ़ाइल और निर्देशिका ट्रिगर में अपंग समर्थित नहीं हैं, और न ही ऐसा कुछ बनाना संभव है जो AppStore संस्करण के साथ रूट के रूप में चलता हो।
marfarma
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.