लॉन्चर / प्लिस्ट का उपयोग करके रिबूट पर कई कमांड कैसे चलाएं?


6

ओएस एक्स में, आप एक प्लीस्ट फाइल ~/Library/LaunchAgents/(या कुछ इसी तरह की, इस पर निर्भर करते हैं कि आप इसे किस तरह के अनुमतियों / उपयोगकर्ताओं को संचालित करना चाहते हैं) के आधार पर लिख सकते हैं , और इसे launchctlरिबूट पर कार्य करने के लिए लोड कर सकते हैं। हालाँकि, क्या प्लिस्ट फ़ाइल में कई कमांड्स को परिभाषित करना संभव है, और अगर ऐसा है, तो मैं इसे कैसे परिभाषित कर सकता हूँ?

उदाहरण के लिए, मान लीजिए कि मैं पायथन कार्यक्रमों की एक श्रृंखला चलाना चाहता हूं, जैसे:

python first_script.py

और फिर मैं पहली स्क्रिप्ट के पूरा होने के बाद स्क्रिप्ट को चलाना चाहता हूं (इसलिए मैं उन दो लिपियों को दो अलग-अलग प्लिस्ट फाइलों में परिभाषित नहीं कर सकता, क्योंकि यह गारंटी नहीं देता कि किसे पहले निष्पादित किया जाए), मैं इस स्क्रिप्ट को चलाना चाहता हूं:

python second_script.py

मैं OS X Mavericks का उपयोग करता हूं 10.9.2।

बोनस

यह वह नहीं है जो मैं अभी करना चाहता हूं और कुछ भी नहीं बल्कि जिज्ञासा से आता है, लेकिन क्या पहले कार्यक्रम के परिणाम के आधार पर दूसरे कार्यक्रम को निष्पादित करना भी संभव है? उदाहरण के लिए:

python first_script.py

और अगर यह स्क्रिप्ट सफल होती है:

python second_script.py --result true

और अगर यह विफल रहता है:

python second_script.py --result false --reason XXX

स्क्रिप्ट को ऑर्डर करने के लिए स्क्रिप्ट लिखने के लिए लिखिए - यह अधिक हो सकता है - या अधिक जटिल उपयोग अजगर के लिए और सीधे मॉड्यूल को कॉल करें। इस कॉलिंग स्क्रिप्ट को lanchd
Mark

जवाबों:


7

अन्य आदेशों को प्रारंभ करने वाला शेल कमांड चलाएँ:

<?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>Label</key>
  <string>some.label</string>
  <key>ProgramArguments</key>
  <array>
    <string>bash</string>
    <string>-c</string>
    <string>python first_script.py;python second_script.py</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

या ProgramArgumentsकरने के लिए कुंजी बदलें

<key>Program</key>
<string>/path/to/script</string>

और इस तरह से एक स्क्रिप्ट का उपयोग करें:

#!/bin/bash

output=$(python first_script.py 2>&1)
if [[ $? = 0 ]]; then
  python second_script.py --result true
else
  python second_script.py --result --false --reason "$output"
fi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.