प्रसंग:मैं कैसे सुनिश्चित करूं कि एक प्रक्रिया चल रही प्रक्रिया वह प्रक्रिया है जिसे मैं उम्मीद कर रहा हूं?
मैं एक linux [1] प्रणाली है कि तीसरे पक्ष के डेमॉन के जो के साथ बातचीत शैल तक ही सीमित हैं की एक श्रृंखला प्रबंधन करता है [2] init स्क्रिप्ट, यानी केवल {शुरू | पुनः आरंभ | रोक | status} उपलब्ध हैं।
समस्या:
प्रक्रियाओं एक पहले से चल रहा है की प्रक्रिया के पीआईडी मान सकते हैं, प्रक्रियाओं की स्थिति चल रहे प्रक्रियाओं के साथ यह पीआईडी है की उपस्थिति का निरीक्षण द्वारा जाँच कर रहे हैं।
उदाहरण:
प्रक्रिया एक रन के पीआईडी 123 के साथ, बाद में मर जाता है, पीआईडी 123 और स्थिति कमांड के साथ प्रक्रिया बी initialises एक unauthentic (गलत) के साथ प्रतिक्रिया "ठीक है"। दूसरे शब्दों में, हम केवल पीआईडी से प्रक्रिया की उपस्थिति की जांच करने के लिए जांच करते हैं कि प्रक्रिया चल रही है, हम मानते हैं कि इस पीआईडी के साथ एक प्रक्रिया मौजूद है, यह प्रक्रिया में प्रक्रिया है।
प्रस्तावित समाधान:
- प्रक्रिया पूछताछ, पीआईडी का उपयोग कर, आदेश/डेमॉन के रूप में है कि पीआईडी अपेक्षा के अनुरूप है चल रहा है सुनिश्चित करने के लिए। इस समाधान के साथ समस्या यह है कि कमांड और पीआईडी दोनों को मिलान करने की आवश्यकता है; जानकारी के कई बिट्स को इस प्रकार बनाए रखने और सिंक में रखने की आवश्यकता है, और त्रुटि/किनारे की स्थितियों में अतिरिक्त जटिलता जोड़ें।
- प्रक्रिया के प्रारंभ समय के साथ पीआईडी फ़ाइल के निर्माण समय को सहसंबंधित करें, यदि प्रक्रिया पीआईडी फ़ाइल निर्माण समय के एक निश्चित डेल्टा के भीतर है, तो हम निश्चित रूप से निश्चित हो सकते हैं कि कमांड/डिमन चलने की उम्मीद है।
क्या पीआईडी के साथ चल रही प्रक्रिया की उपस्थिति से परे, प्रक्रिया/पीआईडी फ़ाइल की प्रामाणिकता को प्रमाणित करने का कोई मानक तरीका है? अर्थात। मैं (सिस्टम के रूप में) जानना चाहता हूं कि आप (प्रक्रिया) चल रहे हैं और यदि आप हैं जो मुझे लगता है कि आप हैं (ए और नहीं बी)।
मान लीजिए कि हमने ऊपर प्रस्तावित दूसरे समाधान को लागू करने के लिए चुना है, पीआईडी निर्माण समय और प्रक्रिया प्रारंभ समय के बीच आत्मविश्वास अंतराल/डेल्टा क्या उचित है? यहां, उचित प्रकार टाइप 1/टाइप 2 त्रुटियों के बीच स्वीकार्य समझौता है।
[1] CentOS/RHEL [2] बैश
यह [सर्वरफॉल्ट] (http://serverfault.com/) पर नहीं होना चाहिए? – Graham
क्या आप तीसरे पक्ष के डिमन्स में स्वयं कोई बदलाव कर सकते हैं? यदि ऐसा है, तो आप डिमन्स के लिए कुछ फ़ाइल सिस्टम ताले बनाने के लिए 'झुंड' का उपयोग कर सकते हैं। –
क्या आप सुनिश्चित हैं कि प्रक्रिया आईडी एक बार में पुन: उपयोग की जाती है? मुझे पता है कि विंडोज़ पर यह मामला है, लेकिन मैंने यह नहीं देखा कि लिनक्स या यूनिक्स पर। Http://stackoverflow.com/questions/3446727/how-does-linux-determine-the-next-pid – cdarke