Bu zor olabilir, çünkü aynı sürecin bağımsız olarak yaşayan ayrı örneklerine sahip olabilirsiniz. Örneğin, farklı bağlantı noktalarını dinleyen sunucular veya farklı kullanıcılar olarak çalışan hizmetler. Bu örnekleri ayırt etmek için, her birine benzersiz bir etiket atamanız gerekir. Etiket genellikle bir dosyadır, ancak soyut ad alanında yerel bir soket, bir TCP bağlantı noktası vb. Olabilir - herhangi bir benzersiz tanımlayıcı bunu yapar. Etiket bir dosya olduğunda, işlem kimliği (pidfile) veya dosyanın dinlediği adlandırılmış bir boru veya soket vb. İçeren normal bir dosya olabilir. İdeal olarak, etiket istemcilerin bağlanmasına izin veren bir iletişim bitiş noktasıdır bu sürece.
Bu farklı etiket türlerinin her biri, aradığınız örneğin çalışıp çalışmadığını farklı bir şekilde kontrol etmenizi sağlar. Örneğin, yerel bir dosya soketiyle, ona bağlanmayı deneyin ve bu sokette dinleme işlemi yoksa işlemi başlatın. Etiket bir pidfile ise, bu işlem kimliğine sahip bir işlem olup olmadığını kontrol edin, ancak bunun kırılgan olduğuna dikkat edin, çünkü işlem ölmüşse kimliğini yeniden kullanan ilişkisiz bir işlem olabilir. İki istemci sürece kısa bir süre içinde ulaşmaya çalışırsa, her ikisinin de sürecin var olmadığını ve her ikisinin de başlatmayı denediğini unutmayın; Bu yarış koşulundan düzgün şekilde korunmak zor olabilir.
Örneklerin tümü aynı denetim süreci tarafından başlatıldığında yönetilmesi daha kolaydır ve denetim süreci, örneklerin ne zaman öldüğünü algılar ve buna göre tepki verir. Bunu yapabilen birçok servis izleme programı .
Program bilinen bir iletişim uç noktasında yanıt vermezse ve bir denetim programı tarafından yönetilmezse, yoksul adamın etiketi bir pidfile olur: işlem kimliğini içeren bir dosya. İşlemi başlattığınızda, pid'i önceden ayarlanmış bir ada sahip bir dosyaya yazın. Sürecin var olması gerektiğinde, pid dosyasını okuyun ve bu pid ile bir işlem olup olmadığını görün. İşlemi öldürdüğünüzde pidfile dosyasını silin. Denetimsiz bir pidfile ile en belirgin sorun, işlemin ölmesi durumunda, pid'in ilişkisiz bir işlemle tekrar kullanılabilmesidir. Doğru işlemle konuştuğunuzdan emin olmak için en azından işlem adını veya yürütülebilir dosyayı kontrol etmelisiniz. Birçok unix varyantının pgrep komutu vardır:pgrep SOMENAME
adı, alt kullanıcı olarak SOMENAME içeren işlemleri listeler, belirli bir kullanıcıyı sınırlamak, tam bir eşleşme istemek, “işlem adı” gibi olası birkaç kavramdan hangisinin kullanıldığını değiştirmek için ek seçeneklerle listeler.
ps -ef | grep -v grep | grep "process_name" || run_command_here