Bir Cron Job Koşu

3 Cevap php

Ben her 10 dakikada bir çalışacak ve nedense bu sefer işi çalıştırmak için 12 dakika sürer bir cron işi varsa, bir önceki hala çalışırken, benim kod başka bir örneğini başlatmak cron olacak? eğer öyleyse nasıl linux üzerinde bu önleyebilirsiniz?

3 Cevap

Evet, olacak.

Size program (örneğin / var / run /) a. Pid dosyası oluşturmak yapmak gerekir. Bu başladığında böyle bir dosya zaten var ve eğer öyleyse çıkış, eğer kontrol etmelisiniz.

Hangi program / script çalışıyor?

Varsa aslında, just kontrol yanıltıcı olabilir. Asliye ölürse, onu silmez. Aslında çalışan bir sürecin 'PID için içerik hesapları (grep ile ps aracı, burada size yardımcı olabilir) kontrol etmek gerekir.

Bu basit yaklaşım oldukça iyi çalışıyor ve bu linux X11 ve eclipse IDE gibi yaygın applicatons tarafından kullanılır.

Uyarı: birkaç örneği elle çalıştırmak olabilir eğer tüm bunları dosya yoksa aynı anda kontrol etmek için izin verecek, ve bunların her biri kendi pid ile oluşturmak ve çalıştırmak gibi bu, uygun değildir. Aslında uygulaması kendi cron işleri, bu durumda değildir ve bir daha robuts eşzamanlı kontrolü (veya Dosya Sistemi kilitleme mekanizması kullanmak kullanmak) için gerek yoktur.

Evet. Bir, bir önceki tamamlanmış değil olursa olsun, eğer cron, aralıkta bir süreç ateşlenmesine.

You can touch bir dosya, başka bir cevap belirtti ve süreci girmeden önce varlığını kontrol gibi.

Yoksa bir "örnek" zaten çalışıyorsa görmek için süreç listesini incelemek olabilir:

ps -ef | grep *your_script_name* | grep -v grep | wc -l