it-swarm-tr.com

Pid ve lock dosyaları ne işe yarar?

Programların pid ve lock dosyalarını belirlediğini sık sık görüyorum. Ve ne yaptıklarından tam olarak emin değilim.

Örneğin, nginx derlerken:

--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \

Birisi buna ışık tutabilir mi?

80
Stann

pid dosyaları bazı programlar tarafından başlatılırken işlem kimliklerini kaydetmek için yazılır. Bunun birden fazla amacı vardır:

  • Sistemin diğer süreçlerine ve kullanıcılarına, söz konusu programın çalıştığını veya en azından başarıyla başlatıldığını gösterir.
  • Bir komut dosyasının çalışıp çalışmadığını kontrol etmek gerçekten kolay ve bir bitirmek istiyorsa düz kill komutu vermenizi sağlar.
  • Bir programın önceki çalışan bir örneğinin başarıyla çıkıp çıkmadığını görmenin ucuz bir yoludur.

Bir pid dosyasının bulunması, belirli bir işlem kimliğinin çalıştığını garanti etmez, bu nedenle bu yöntem% 100 kusursuz değildir, ancak birçok durumda "yeterince iyi" değildir. İşlem tablosunda belirli bir PID'nin var olup olmadığını kontrol etmek, tüm durumlarda çağrı yapmak istenmeyecek olan ps yardımcı programına bağımlı olmak istemediğiniz sürece UNIX benzeri işletim sistemlerinde tamamen taşınabilir değildir. bazı UNIX benzeri işletim sistemleri ps işlevini zaten farklı uygular).

Kilit dosyaları, bir sistemde aynı anda çalışan, aynı anda başka bir şeye erişemeyen bir programın iki (iyi davranmış) ayrı örneğini sağlamak için programlar tarafından kullanılır. Fikir, program kaynağına erişmeden önce, bir kilit dosyasının varlığını kontrol eder ve kilit dosyası varsa, ya hata ya da onun gitmesini bekleyin. Var olmadığında, kaynağı "elde etmek" isteyen program dosyayı oluşturur ve daha sonra karşılaşılabilecek diğer örnekler bu işlemin onunla yapılmasını bekleyecektir. Tabii ki, bu program aslında kilidi "edinme" varsa bunu serbest bırakır ve kilit dosyasını silmeyi unutma.

Bu, UNIX benzeri tüm işletim sistemleri altındaki dosya sisteminin serialization zorlaması nedeniyle çalışır, bu da dosya sisteminde yalnızca bir değişikliğin herhangi bir zamanda gerçekleştiği anlamına gelir. Veritabanları ve benzeri kilitler gibi.

90
LawrenceC

Bu dosyalar genellikle sistemde yalnızca bir kez çalıştırılması gereken arka plan programları tarafından kullanılır. PID dosyası genellikle, zaten başlatılmış ve çalışmakta olan programın işlem kimlik numarasını içerir. Ayrıca, başlatıldığında kilit dosyasını oluşturur. Kilit dosyası olduğu sürece, kullanıcı müdahalesi olmadan başka bir dosya başlatmaz. Kilit dosyası varsa ve pid dosyasında belirtilen işlem kimliği çalışmıyorsa, arka plan programının "ölü" bir durumda olduğu kabul edilir; . Bu, bazı programlar için özel bir başlatma/yeniden başlatma senaryosu başlatabilir. Düzgün kapatıldığında kilit dosyası kaldırılır.

14
Caleb

Bir PID dosyası, çalışan bir işlemin İşlem Kimliğini içerecektir. Bunun çeşitli kullanımları vardır; okuyabilir ve sürecin hala çalışıp çalışmadığını kontrol edebilir ve uygun işlemi yapabilir veya okuyabilir ve işlemi öldürebilirsiniz.

Bir kilit dosyası büyük olasılıkla uygulamaya özgüdür. Kilit dosyaları, bazı kaynakların kullanımda olduğunu ve erişim isteyen sürecin devam etmeden önce kaynağın serbest bırakılmasını beklemesi gerektiğini belirtmek için kullanılır.

8
user591