यह मुश्किल हो सकता है, क्योंकि आपके पास एक ही प्रक्रिया के अलग-अलग उदाहरण हो सकते हैं जो स्वतंत्र रूप से रहते हैं। उदाहरण के लिए सर्वर विभिन्न बंदरगाहों, या सेवाओं को विभिन्न उपयोगकर्ताओं के रूप में सुन रहा है। इन उदाहरणों के बीच अंतर करने के लिए, आपको उनमें से प्रत्येक को एक अद्वितीय टैग निर्दिष्ट करने की आवश्यकता है। टैग अक्सर एक फ़ाइल होता है, लेकिन यह सार नाम स्थान, एक टीसीपी पोर्ट, आदि में एक स्थानीय सॉकेट हो सकता है - कोई भी विशिष्ट पहचानकर्ता करेगा। जब टैग एक फ़ाइल होता है, तो यह एक नियमित फ़ाइल हो सकती है जिसमें एक प्रक्रिया आईडी (एक पीडिफ़ाइल), या एक नामांकित पाइप या सॉकेट होता है जिसे फ़ाइल सुन रही है, आदि। आदर्श रूप से, टैग एक संचार समापन बिंदु है जो क्लाइंट को कनेक्ट करने की अनुमति देता है उस प्रक्रिया के लिए।
इन अलग-अलग प्रकार के टैगों में से प्रत्येक में जाँच का एक अलग तरीका होता है कि क्या आप जो उदाहरण मांग रहे हैं वह ऊपर और चल रहा है या नहीं। उदाहरण के लिए, एक स्थानीय फ़ाइल सॉकेट के साथ, इसे कनेक्ट करने का प्रयास करें, और उस सॉकेट पर सुनने की कोई प्रक्रिया नहीं होने पर प्रक्रिया शुरू करें। यदि टैग एक पिडफाइल है, तो जांचें कि क्या उस प्रक्रिया आईडी के साथ कोई प्रक्रिया है, लेकिन सावधान रहें कि यह नाजुक है, क्योंकि यदि प्रक्रिया मर गई है, तो एक असंबंधित प्रक्रिया हो सकती है जिसने अपनी आईडी का पुन: उपयोग किया हो। खबरदार कि अगर दो ग्राहक कम समय सीमा में प्रक्रिया तक पहुंचने की कोशिश करते हैं, तो वे दोनों को पता चल सकता है कि प्रक्रिया मौजूद नहीं है और दोनों इसे शुरू करने का प्रयास करते हैं; इस दौड़ की स्थिति से ठीक से बचाव मुश्किल हो सकता है।
उदाहरणों को प्रबंधित करना तब आसान होता है जब वे सभी एक ही पर्यवेक्षक प्रक्रिया द्वारा शुरू किए जाते हैं, और पर्यवेक्षक प्रक्रिया का पता लगाता है जब उदाहरण मर जाते हैं और तदनुसार प्रतिक्रिया करते हैं। कई सेवा निगरानी कार्यक्रम जो ऐसा कर सकते हैं।
यदि प्रोग्राम एक ज्ञात संचार समापन बिंदु पर प्रतिक्रिया नहीं देता है और यह एक पर्यवेक्षक कार्यक्रम द्वारा प्रबंधित नहीं किया जाता है, तो गरीब आदमी का टैग एक पीडफाइल है: एक फाइल जिसमें प्रक्रिया आईडी है। जब आप प्रक्रिया शुरू करते हैं, तो एक prearranged नाम के साथ फ़ाइल को pid लिखें। जब आपको अस्तित्व की प्रक्रिया की आवश्यकता होती है, तो पीडफाइल पढ़ें और देखें कि क्या उस पिड के साथ कोई प्रक्रिया है। जब आप प्रक्रिया को मारते हैं, तो पिडफाइल मिटा दें। एक अनसुनी पीडिफ़ाइल के साथ सबसे अधिक मुख्य समस्या यह है कि यदि प्रक्रिया मर जाती है, तो इसका पीआईडी कुछ असंबंधित प्रक्रिया द्वारा पुन: उपयोग किया जा सकता है। आपको कम से कम प्रक्रिया नाम या प्रक्रिया निष्पादन योग्य की जांच करनी चाहिए ताकि यह सुनिश्चित हो सके कि आप सही प्रक्रिया से बात कर रहे हैं। कई यूनिक्स वेरिएंट में एक pgrep कमांड है:pgrep SOMENAME
उन प्रक्रियाओं को सूचीबद्ध करता है जिनके नाम में एक विकल्प के रूप में SOMENAME होता है, एक विशेष उपयोगकर्ता तक सीमित करने के लिए अतिरिक्त विकल्पों के साथ, सटीक मिलान की आवश्यकता होती है, जो कि "प्रक्रिया नाम" के कई संभावित धारणाओं को बदलने के लिए उपयोग किया जाता है, आदि।
ps -ef | grep -v grep | grep "process_name" || run_command_here