लॉन्च के द्वारा चलने वाली स्क्रिप्ट के लिए पर्यावरण चर सेट करना?


1

मेरे पास एक स्क्रिप्ट है जो अतीत में काम करती थी, लेकिन अब मुद्दे होने लगती है (मेरा मानना ​​है कि यह योसेमाइट के कारण है)। मैंने जो कुछ किया था, वह एक पर्यावरण चर बना था जो "झूठे" पर सेट किया गया था और फिर मेरी स्क्रिप्ट इसे "सच" पर सेट कर देगी, ताकि यदि स्क्रिप्ट बहुत लंबा हो जाए और समाप्त होने से पहले फिर से शुरू हो जाए तो यह समवर्ती रूप से फिर से चलाने का प्रयास नहीं करेगा। हालाँकि, यह अब काम नहीं करता है।

मैंने शुरुआत में /etc/launchd.conf के साथ चर सेट किया

setenv autoBackupImagesInProgress false

और मेरी स्क्रिप्ट का वह हिस्सा जो अब काम नहीं करता है

#Ensure that this script isn't already running
if [ -z "$autoBackupImagesInProgress" ] ; then
   #Concurrency variable was not setup so this will not work;
   #edit .bashrc or .profile to include export autoBackupImagesInProgress=false
   #should be /etc/launchd.conf
   print "WARNING: Concurrency protection unavailable"
elif [ $autoBackupImagesInProgress = true ] ; then
   #Another process has already started this, but has not yet finished
   print "WARNING: Already in progress; aborting."
   exit 0;
fi

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


सुनिश्चित नहीं है कि स्क्रिप्ट क्या रोक रही है। लेकिन यह मदद कर सकता है अगर आप इसे सरल बना सकते हैं, तो यदि आपके ब्लॉक में एक चेक है और यह एक और एक है। इसलिए अगर .. = सत्य है तो "चेतावनी: पहले से ही ... और प्रिंट करें ... चेतावनी" मुद्रित करें: आवर्ती
markhunte

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

जवाबों:


1

अपना स्क्रिप्ट संपादक खोलें (पैड लॉन्च करें - & gt; अन्य - & gt; स्क्रिप्ट संपादक) स्क्रिप्ट इस तरह लिखें:

do shell script "launchctl setenv autoBackupImagesInProgress false"

यदि आप कई चर सेट करना चाहते हैं तो कई लाइनों का उपयोग करें।

इस स्क्रिप्ट को एप्लिकेशन के रूप में सहेजें, SystemPreferences खोलें → उपयोगकर्ता & amp; समूह → आपका उपयोगकर्ता → आइटम लॉग इन करें और अपनी सहेजी गई स्क्रिप्ट जोड़ें।

परिवर्तन लागू करने के लिए, अपना खाता लॉगआउट करें और फिर से लॉग इन करें।


1
यह काम नहीं करता है। ठीक से काम करता है अगर मैं स्क्रिप्ट को मैन्युअल रूप से चलाता हूं (जैसा कि /etc/launchd.conf फ़ाइल के साथ होता है), लेकिन जब लॉन्च से शुरू किया जाता है (स्क्रिप्ट हर 5 मिनट में चलाने के लिए सेट होती है) तो यह काम नहीं करता है।
tenmiles
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.