Sorun gerçekten cron ile ilgili değil - bu senin işinle ilgili.
İşinizin bir açıklama kilidiyle etkileşime girmesi gerekir. Bunu yapmanın en kolay yolu, bir dizin oluşturmayı denemektir ve başarılı olursa, çıkmazsa devam eder. İşiniz bittiğinde ve çıktığında, bir sonraki çalışmaya hazır dizini kaldırmalıdır. İşte gösterilecek bir senaryo.
#!/bin/bash
function cleanup {
echo "Cleanup"
rmdir /tmp/myjob.lck
}
mkdir /tmp/myjob.lck || exit 1
trap cleanup EXIT
echo 'Job Running'
sleep 60
exit 0
Bunu bir terminalde çalıştırın ve 60 saniye dolmadan başka bir terminalde çalıştırın. Durum 1 ile çıkacaktır. İlk işlemden çıktıktan sonra ikinci terminalden çalıştırabilirsiniz ...
DÜZENLE:
Sürüyü öğrendiğim gibi bu cevabı güncelleyeceğimi düşündüm.
sürü (1) kullanımı daha kolay olabilir. Bu durumda flock -n
, örneğin,
* * * * * /usr/bin/flock -n /tmp/myAppLock.lck /path/to/your/job
İşinizi her dakika çalıştırır, ancak sürü dosya üzerinde kilit alamazsa başarısız olur.