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

  • Chriselle Lim

    Chriselle Li

    26 Ocak 2008
  • hidetake takayama

    hidetake tak

    3 Mart 2009
  • TecNoob

    TecNoob

    15 AĞUSTOS 2013