สิ่งนี้อาจเป็นเรื่องยุ่งยากเนื่องจากคุณสามารถแยกอินสแตนซ์ของกระบวนการเดียวกันที่แยกกันอยู่โดยอิสระ ตัวอย่างเช่นเซิร์ฟเวอร์ที่กำลังฟังพอร์ตต่าง ๆ หรือบริการที่ทำงานในฐานะผู้ใช้ที่ต่างกัน เพื่อที่จะแยกแยะความแตกต่างระหว่างอินสแตนซ์เหล่านี้คุณต้องกำหนดแท็กที่ไม่ซ้ำกันให้แต่ละอัน แท็กมักจะเป็นไฟล์ แต่สามารถเป็นซ็อกเก็ตในพื้นที่ใน namespace นามธรรม, พอร์ต TCP, ฯลฯ - ตัวระบุที่ไม่ซ้ำกันจะทำ เมื่อแท็กเป็นไฟล์ไฟล์นั้นอาจเป็นไฟล์ปกติที่มี ID กระบวนการ (pidfile) หรือไพพ์ที่มีชื่อหรือไฟล์ที่ซ็อคเก็ตที่ไฟล์กำลังฟังอยู่เป็นต้นโดยปกติแล้วแท็กคือจุดสิ้นสุดการสื่อสารที่อนุญาตให้ไคลเอนต์เชื่อมต่อ กับกระบวนการนั้น
แท็กประเภทต่าง ๆ เหล่านี้ส่งผลให้เกิดวิธีตรวจสอบว่าอินสแตนซ์ที่คุณค้นหากำลังทำงานอยู่หรือไม่ ตัวอย่างเช่นใช้ซ็อกเก็ตไฟล์ในเครื่องพยายามเชื่อมต่อกับซ็อกเก็ตนั้นและเริ่มต้นกระบวนการหากไม่มีกระบวนการรับฟังจากซ็อกเก็ตนั้น หากแท็กเป็น pidfile ให้ตรวจสอบว่ามีกระบวนการที่มี ID กระบวนการนั้นหรือไม่ แต่ระวังว่านี่เป็นกระบวนการที่เปราะบางเนื่องจากหากกระบวนการนั้นเสียชีวิต ระวังว่าหากลูกค้าสองรายพยายามเข้าถึงกระบวนการในช่วงเวลาอันสั้นพวกเขาทั้งสองอาจพบว่ากระบวนการนั้นไม่มีอยู่และทั้งคู่พยายามที่จะเริ่มกระบวนการ การปกป้องอย่างถูกต้องจากสภาพการแข่งขันนี้อาจเป็นเรื่องยุ่งยาก
ง่ายต่อการจัดการอินสแตนซ์เมื่อพวกเขาทั้งหมดเริ่มต้นโดยกระบวนการของผู้ดูแลระบบเดียวกันและกระบวนการของผู้ดูแลนั้นจะตรวจพบเมื่ออินสแตนซ์ตายและตอบสนองตามนั้น โปรแกรมตรวจสอบบริการจำนวนมากที่สามารถทำได้
หากโปรแกรมไม่ตอบสนองต่อจุดปลายการสื่อสารที่รู้จักและไม่ได้รับการจัดการโดยโปรแกรมผู้ดูแลระบบแท็กของคนจนคือ pidfile: ไฟล์ที่มี ID กระบวนการ เมื่อคุณเริ่มกระบวนการเขียน pid ไปยังไฟล์ที่มีชื่อที่จัดแจงไว้ล่วงหน้า เมื่อคุณต้องการให้กระบวนการมีอยู่อ่าน pidfile และดูว่ามีกระบวนการที่มี pid นั้นหรือไม่ เมื่อคุณฆ่ากระบวนการลบ pidfile ปัญหาที่สำคัญที่สุดกับ pidfile ที่ไม่ได้สำรองคือถ้ากระบวนการตาย pid อาจถูกนำกลับมาใช้โดยกระบวนการที่ไม่เกี่ยวข้อง อย่างน้อยคุณควรตรวจสอบชื่อกระบวนการหรือกระบวนการที่ปฏิบัติการได้เพื่อให้แน่ใจว่าคุณกำลังพูดคุยกับกระบวนการที่ถูกต้อง หลายตัวแปรยูนิกซ์มีคำสั่งpgrep :pgrep SOMENAME
แสดงรายการกระบวนการที่ชื่อมี SOMENAME เป็นสตริงย่อยพร้อมตัวเลือกเพิ่มเติมเพื่อ จำกัด ผู้ใช้เฉพาะต้องมีการจับคู่ที่ตรงกันเพื่อเปลี่ยนความคิดที่เป็นไปได้หลายอย่างของ“ ชื่อกระบวนการ” ที่ใช้ ฯลฯ
ps -ef | grep -v grep | grep "process_name" || run_command_here