Nasıl aynı anda çalışan bir senaryoyu önlemek için?
Benim komut dosyası bir kereden fazla zaman kalmasını önlemek istiyorum.
Benim geçerli bir yaklaşımdır
- semafor bir dosya çalışan sürecin pıd içeren oluşturun
- eğer benim kimliği işlem dosyasını oku, exit (hiç belli olmaz...) değil
- bu işlem sonunda, dosyayı silin
Asılı sürecini önlemek için, Eğer hala çalışıyorsa periyodik olarak onun büyük sonra dosya Maksimum çalışma süresi izin verilen kontrol etmek için bir cron işi kurmak ve süreci öldürür.
Yanlış bir işlem öldürüyorum böyle bir risk var mı?
Daha iyi bir şekilde gerçekleştirmek için bir bütün olarak bu var mı?
CEVAP
flock(1) dosya tanımlayıcısı özel kapsamlı kilit bir hale getirmek için kullanın. Bu şekilde senaryoyu farklı bölümlerini senkronize edebilirsiniz.
#!/bin/bash
(
# Wait for lock on /var/lock/.myscript.exclusivelock (fd 200) for 10 seconds
flock -x -w 10 200 || exit 1
# Do stuff
) 200>/var/lock/.myscript.exclusivelock
Bu ( ) kod arasında bir defada bir süreç tarafından çalıştırılan ve süreci çok uzun bir kilit beklemez sağlar.
Uyarı: Bu özel komut util-linux bir parçasıdır. Eğer bir işletim sistemi Linux dışında çalıştırırsanız, olabilir veya olmayabilir.

Nasıl aynı anda birden çok istemci bir...
Nasıl aynı anda güvenli olması için ço...
Vim, nasıl bir dosyayı aynı hat numara...
Nasıl gıt yazar için tüm şubelerden ay...
Nasıl zamanı bunu tespit etmek için .N...