रूबी 1.9.x में, क्या करने के लिए या तो मेरी रूबी स्क्रिप्ट को फिर से चलाएँ, या पिछले उदाहरण समाप्त होने की प्रतीक्षा करने की अनुमति नहीं एक आसान तरीका हो सकता है? **उसी रूबी स्क्रिप्ट के समवर्ती उदाहरणों को कैसे सीमित करें?
मैं गन्दा फ़ाइल-लॉकिंग से बचने के लिए आशा करती हूं कि या तालिका की जांच की प्रक्रिया।
क्या global mutex या सैमफोर पहले से ही कोर में कुछ है? मैंने देशी Mutex का अध्ययन किया लेकिन यह केवल एक रूबी प्रक्रिया के भीतर धागे पर लागू होता है, न कि विभिन्न प्रक्रियाओं में।
** बाद में मैं टाइमआउट कार्यक्षमता जोड़ सकता हूं, या एन उदाहरणों तक सीमित हो सकता हूं, या एक से अधिक वैश्विक लॉक का उपयोग कर रहा हूं (एक सिस्टम-व्यापी संसाधन जिसमें केवल अधिकतम एक उदाहरण होना चाहिए)।
मैं पहले से ही अपने रूबी को बैश स्क्रिप्ट के साथ लपेटता हूं जो स्वयं उपयोग करते हैं कोड '[-z "$ (pidof -x -o% PPID -o $$ $ {0 ## * /})"] || exec echo "$ (date) $ 0: $$ पहले ही पीआईडी की गंध करता है: $ (pidof -x $ 0), ... अलविदा !!" हालांकि यह अन्य उद्देश्यों को पूरा करता है। रुबी के भीतर पहले से ही एक बेहतर समाधान है जो लिखने के लिए किसी भी निश्चित फ़ाइल को लॉक करना है। '/ Tmp/scriptname.rb.lock'। बाहर निकलने पर या यहां तक कि यदि मेरा कोड दुर्घटनाग्रस्त हो जाता है (जो अक्सर अपवाद उठाता है) तो सिस्टम उस लॉक को साफ़ कर देगा। मैं उस हैक के साथ तब तक जाऊंगा जब तक कि वैश्विक सेमफोरों के लिए एक साफ, मूल इंटरफ़ेस न हो - जो मुझे किसी भी तरह की आवश्यकता होगी। – Marcos