के बाद से एक सॉकेट समाधान अभी तक का उल्लेख नहीं किया गया है यह उनका कहना है कि सॉकेट प्रभावी mutexes के रूप में इस्तेमाल किया जा सकता लायक है। सॉकेट निर्माण एक परमाणु ऑपरेशन है, जैसे mkdir
गनस्टिक ने इंगित किया है, इसलिए एक सॉकेट लॉक या म्यूटेक्स के रूप में उपयोग करने के लिए उपयुक्त है।
टिम Kay के पर्ल स्क्रिप्ट 'सोलो' यकीन है कि केवल एक स्क्रिप्ट की एक प्रति किसी एक समय में चलाया जा सकता है बनाने के लिए एक बहुत छोटा और प्रभावी स्क्रिप्ट है। यह विशेष रूप से क्रॉन नौकरियों के उपयोग के लिए डिज़ाइन किया गया था, हालांकि यह अन्य कार्यों के लिए भी पूरी तरह से काम करता है और मैंने इसे गैर-क्रोब नौकरियों के लिए बहुत प्रभावी ढंग से उपयोग किया है।
सोलो अब तक कि जांच स्क्रिप्ट आप केवल की एक प्रति को चलाना चाहता हूँ से बाहर किये जाते में वर्णित अन्य तकनीकों के ऊपर एक फायदा है। यदि स्क्रिप्ट पहले से चल रही है तो उस स्क्रिप्ट का दूसरा उदाहरण कभी भी शुरू नहीं होगा। यह एक लॉक द्वारा संरक्षित स्क्रिप्ट के अंदर कोड के ब्लॉक को अलग करने के विरोध में है। संपादित करें: यदि flock
का उपयोग किसी स्क्रिप्ट के बजाय क्रॉन नौकरी में किया जाता है, तो आप स्क्रिप्ट के दूसरे उदाहरण को प्रारंभ करने से रोकने के लिए भी इसका उपयोग कर सकते हैं - नीचे उदाहरण देखें।
*/5 * * * * solo -port=3801 /path/to/script.sh args args args
# "/path/to/script.sh args args args" is only called if no other instance of
# "/path/to/script.sh" is running, or more accurately if the socket on port 3801
# is not open. Distinct port numbers can be used for different programs so that
# if script_1.sh is running it does not prevent script_2.sh from starting, I've
# used the port range 3801 to 3810 without conflicts. For Linux non-root users
# the valid port range is 1024 to 65535 (0 to 1023 are reserved for root).
* * * * * solo -port=3802 /path/to/script_1.sh
* * * * * solo -port=3803 /path/to/script_2.sh
# Flock can also be used in cron jobs with a distinct lock path for different
# programs, in the example below script_3.sh will only be started if the one
# started a minute earlier has already finished.
* * * * * flock -n /tmp/path.to.lock -c /path/to/script_3.sh
लिंक::
आशा
यहाँ कैसे आप इसे क्रॉन साथ उपयोग कर सकते हैं का एक उदाहरण है इससे मदद मिलती है।
संभव डुप्लिकेट के लिए त्रुटि संदेश आउटपुट [एक समय में एक शेल स्क्रिप्ट का केवल एक उदाहरण चल रहा है यह सुनिश्चित करने के लिए त्वरित और गंदे तरीके] (http://stackoverflow.com/questions/185451/quick-and-dirty-way-to-ensure-only- एक-उदाहरण-ऑफ-ए-शेल-स्क्रिप्ट-चल रहा है-पर) – user