Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रणाली >> MAC

macOS में शेड्यूल पर स्क्रिप्ट चलाने के लिए launchd का उपयोग कैसे करें

macOS में शेड्यूल पर स्क्रिप्ट चलाने के लिए launchd का उपयोग कैसे करें

launchd स्क्रिप्ट और प्रक्रियाओं को शुरू करने, रोकने और प्रबंधित करने के लिए एक उपकरण है। यदि आपने Linux के किसी भी संस्करण के साथ काम किया है, तो आप cron से परिचित हो सकते हैं। launchd मूल रूप से macOS में cron है।

डेमॉन क्या हैं?

macOS में शेड्यूल पर स्क्रिप्ट चलाने के लिए launchd का उपयोग कैसे करें

डेमॉन (उच्चारित "डिमन्स") वे स्क्रिप्ट हैं जो बैकग्राउंड में चलती हैं। एप्लिकेशन के विपरीत, डेमॉन प्रक्रियाओं के रूप में चलते हैं और उपयोगकर्ता या किसी अन्य एप्लिकेशन के प्रत्यक्ष नियंत्रण में नहीं होते हैं। macOS पर वे लॉन्चड फ्रेमवर्क की कमान के तहत होते हैं जो तय करता है कि वे कब शुरू और रुकते हैं।

असामान्य नाम मैक्सवेल के डेमॉन से आता है, एक काल्पनिक एजेंट जो थर्मोडायनामिक्स विचार प्रयोग में अणुओं को क्रमबद्ध करता है।

स्क्रिप्ट लिखना

macOS में शेड्यूल पर स्क्रिप्ट चलाने के लिए launchd का उपयोग कैसे करेंmacOS में शेड्यूल पर स्क्रिप्ट चलाने के लिए launchd का उपयोग कैसे करें

launchd के माध्यम से डेमॉन चलाने के लिए, आपको कुछ स्क्रिप्ट लिखने की आवश्यकता होगी। सबसे आम स्क्रिप्टिंग भाषा bash है। यदि आप bash स्क्रिप्टिंग के बारे में अधिक जानना चाहते हैं, तो आप हमारे bash स्क्रिप्टिंग के लिए शुरुआती गाइड को देख सकते हैं।

launchd का उपयोग करना

macOS में शेड्यूल पर स्क्रिप्ट चलाने के लिए launchd का उपयोग कैसे करें

launchd में स्क्रिप्ट जॉब परिभाषाओं द्वारा ट्रिगर की जाती हैं जो विशिष्ट निर्देशिकाओं में संग्रहीत .plist फ़ाइलें हैं। ये XML फ़ाइलें जॉब को एक नाम देती हैं, निर्दिष्ट करती हैं कि कौन सी स्क्रिप्ट लॉन्च की जानी चाहिए, और इंगित करती हैं कि स्क्रिप्ट कब चलनी चाहिए। एक बार जब आप अपनी स्क्रिप्ट लिख लेते हैं, तो आप एक जॉब परिभाषा लिखेंगे और लोड करेंगे जो उचित समय पर स्क्रिप्ट लॉन्च करती है।

एक जॉब परिभाषा नीचे दिए गए जैसी दिखती है:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>local.restart</string> <key>Program</key> <string>/Users/user/Scripts/restart.sh</string> <key>RunAtLoad</key> <true/> </dict> </plist>

आवश्यकतानुसार संशोधित करें, फिर इसे .plist एक्सटेंशन के साथ एक टेक्स्ट फ़ाइल में डालें और इसे सही निर्देशिका में डालें (नीचे देखें)।

जॉब विवरण के कुछ प्रमुख भाग हैं:

  • Label: launchd के भीतर जॉब का नाम। प्रत्येक जॉब के लिए अद्वितीय होना चाहिए। ये रिवर्स डोमेन नोटेशन में लिखे जाते हैं, और निजी एजेंटों के लिए "local" एक बढ़िया डोमेन है।
  • Program: इस जॉब विवरण द्वारा लॉन्च की जाने वाली स्क्रिप्ट का पूर्ण पथ।
  • RunAtLoad: वर्णन करता है कि स्क्रिप्ट कब चलनी चाहिए। यहां कुछ अलग विकल्प हैं:
    • RunAtLoad: जॉब परिभाषा लोड होते ही चलाएं। प्रति लोड केवल एक बार चलता है।
    • StartInterval: हर n सेकंड में जॉब शुरू करें। यह उदाहरण हर 7200 सेकंड या हर 2 घंटे में जॉब चलाएगा।
      <key>StartInterval</key> <integer>7200</integer>
    • StartCalendarInterval: किसी विशिष्ट समय और तारीख पर जॉब चलाएं। नीचे दिया गया कोड हर दिन सुबह 9 बजे जॉब चलाएगा।
      <key>StartCalendarInterval</key> <dict> <key>Hour</key> <integer>9</integer> <key>Minute</key> <integer>0</integer> </dict>

एजेंट बनाम डेमॉन

एक बार जब आप अपना जॉब विवरण लिख लेते हैं, तो आपको इसे उचित निर्देशिका में सहेजना होगा।

launchd आगे एजेंट और डेमॉन के बीच अंतर करता है। एक एजेंट लॉग-इन उपयोगकर्ता की ओर से चलता है, जबकि एक डेमॉन रूट उपयोगकर्ता के तहत चलता है। इसका मतलब है कि यदि आप किसी स्क्रिप्ट को एक विशिष्ट उपयोगकर्ता खाते तक सीमित करना चाहते हैं, तो आप एक एजेंट का उपयोग कर सकते हैं। यदि आप कुछ ऐसा चाहते हैं जो कोई फर्क नहीं पड़ता कि कौन लॉग इन है, तो आप एक डेमॉन का उपयोग करेंगे।

एजेंट और डेमॉन के बीच अंतर इस बात से आता है कि वे कंप्यूटर पर कहां सहेजे गए हैं:

  • "~/Library/LaunchAgents" लॉग-इन उपयोगकर्ता की ओर से चलता है
  • "/Library/LaunchDaemons" रूट उपयोगकर्ताओं की ओर से चलता है

आपको अपना plist सही स्थान पर सहेजना होगा।

launchctl में जॉब लोड करना

macOS में शेड्यूल पर स्क्रिप्ट चलाने के लिए launchd का उपयोग कैसे करें

एक बार जब आप अपनी स्क्रिप्ट बना लेते हैं और अपने एजेंट को सही जगह पर सहेज लेते हैं, तो आपको इसे launchctl में लोड करना होगा। यह भविष्य में लॉगिन पर स्वचालित रूप से होगा।

यह देखने के लिए कि launchctl में वर्तमान में क्या चल रहा है, आप टर्मिनल में launchctl list का उपयोग कर सकते हैं। इस विशाल सूची को आपके स्क्रिप्ट के लिए grep किया जा सकता है जैसे कि निम्न द्वारा लेबल करके:

launchctl list | grep local.restart

एक स्क्रिप्ट लोड करने के लिए, टर्मिनल खोलें और निम्न कमांड का उपयोग करें:

launchctl load ~/Library/LaunchAgents/local.restart.plist
macOS में शेड्यूल पर स्क्रिप्ट चलाने के लिए launchd का उपयोग कैसे करें

launchctl कतार से स्क्रिप्ट को हटाने के लिए, unload कमांड का उपयोग करें:

launchctl unload ~/Library/LaunchAgents/local.restart.plist
macOS में शेड्यूल पर स्क्रिप्ट चलाने के लिए launchd का उपयोग कैसे करें

एक जॉब लोड करने से यह launchd कतार में चला जाता है, और जॉब अपने लॉन्च शर्तों में निर्दिष्ट समय पर चलेगा। यदि आप तुरंत एक स्क्रिप्ट चलाना चाहते हैं चाहे कुछ भी हो, तो आपको "start" कमांड का उपयोग करना चाहिए:

launchctl start local.restart

यह कमांड जॉब के लेबल को लेता है और केवल तभी काम करेगा यदि जॉब पहले से ही launchctl में लोड हो चुका है।

निष्कर्ष

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


  1. macOS रिकवरी मोड मास्टर करें: तेज़ और विश्वसनीय सिस्टम फिक्स macOS रिकवरी मोड मास्टर करें: तेज़ और विश्वसनीय सिस्टम फिक्स

    अगर मैं कहूं कि Mac अब तक की सबसे विश्वसनीय मशीनें हैं, तो आपकी क्या प्रतिक्रिया होगी? मान लीजिए कि आप में से अधिकांश इससे सहमत होंगे, लेकिन एक और सवाल है: अगर वे इतने भरोसेमंद हैं, तो हमें Mac पर समस्याओं का सामना क्यों करना पड़ता है? जवाब सरल है - कभी-कभी मैलवेयर, भ्रष्ट macOS इंस्टॉलेशन, या गलती

  1. macOS टर्मिनल मास्टर करें: आवश्यक कमांड-लाइन गाइड macOS टर्मिनल मास्टर करें: आवश्यक कमांड-लाइन गाइड

    जिस तरह हमारे पास Windows पर कमांड प्रॉम्प्ट एप्लिकेशन है, macOS में एक टर्मिनल है जिसका उपयोग हम कमांड निष्पादित करने या OS में परिवर्तन करने के लिए कर सकते हैं। टर्मिनल एक macOS समर्पित कमांड-लाइन एप्लिकेशन है जिसका उपयोग आप सिस्टम सेटिंग्स में परिवर्तन करने, फ़ाइलों या ऐप्स को खोलने, या कार्यों क

  1. macOS कैटालिना की नई सुरक्षा सुविधाओं में मास्टर करें: एक व्यावहारिक मार्गदर्शिका macOS कैटालिना की नई सुरक्षा सुविधाओं में मास्टर करें: एक व्यावहारिक मार्गदर्शिका

    Apple ने कुछ महीने पहले Macintosh मशीनों के लिए macOS कैटालिना अपग्रेड जारी किया, जो टन उपयोगी सुविधाओं से भरा हुआ है। कैटालिना macOS Mojave का उत्तराधिकारी है, और यह अब तक का Apple का सबसे बड़ा अपग्रेड है। इस नवीनतम macOS संस्करण में साइडकार जैसी कुछ क्रांतिकारी विशेषताएं शामिल हैं जो आपको अपने iPa