Nasıl aynı anda çalışan bir senaryoyu önlemek için? | Netgez.com
SORU
4 EKİM 2008, CUMARTESİ


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
4 EKİM 2008, CUMARTESİ


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.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • LounaTutorials

    LounaTutoria

    10 EYLÜL 2009
  • SPBedition

    SPBedition

    24 HAZİRAN 2013