मैं एक रूबी डिमन बनाना चाहता हूं जो एक हत्या कमांड के साथ शानदार ढंग से बंद हो जाएगा। मैं एक सिग्नल जाल जोड़ना चाहता हूं जो #code that could take some time to run
बंद होने से पहले समाप्त हो जाएगा। कैसे जोड़ा होता है कि कुछ इस तरह हैं:स्वच्छ शट डाउन के साथ रूबी डिमन
pid = fork do
pid_file = "/tmp/pids/daemon6.pid"
File.open(pid, 'w'){ |f| f.write(Process.pid) }
loop do
begin
#code that could take some time to run
rescue Exception => e
Notifier.deliver_daemon_rescued_notification(e)
end
sleep(10)
end
end
Process.detach pid
इसके अलावा, यह बेहतर होगा एक अलग लिपि में है कि, एक अलग मार स्क्रिप्ट की तरह है करने के लिए की बजाय डेमॉन कोड के हिस्से के रूप में यह हो रही है? कुछ monit
या God
की तरह इसे रोकने के लिए कॉल करेंगे?
मैं किसी भी सुझाव की सराहना करता हूं।
आपके उत्तर के लिए धन्यवाद, समस्या यह है कि इंटरप्ट को पकड़ने से मुख्य लूप खत्म नहीं हो जाएगा। मैं क्या करना चाहता हूं कि बाधा पकड़ने के लिए, लूप खत्म होने दें और फिर प्रक्रिया को साफ करें और मार दें। – fflyer05
मैंने अपने उत्तर को ऐसा करने के किसी अन्य तरीके से अपडेट किया है जो अधिक सुंदरता से बाहर निकलता है (लेकिन इसके बजाय 'नींद' में समस्याएं हैं)। – Theo
वह अच्छी तरह से करेगा। धन्यवाद! अगर लूप तक नींद की कॉल ली गई तो क्या होगा? मैंने सोचा था कि रूबी की नींद पहले ही विस्फोटों में थी ताकि आईएनटी सिग्नल इसे नींद से बाहर निकाल दे। वैसे भी, अतिरिक्त नींद एक छोटी सी समस्या है तो लूप के बीच में एक प्रक्रिया को रोक दिया जाता है। – fflyer05