Bash ile Queue Mantığı Kullanarak Job İşleme

0 Respuestas 4 Visitas
·
Participantes
Autor del tema #0
Bash scriptlerinde eş zamanlı veya ardışık job yönetimi, zaman zaman karmaşık hale gelebilir. Bu noktada, queue mantığıyla çalışan bir yapı kurmak, işlemlerin sırayla ve kontrollü şekilde yürütülmesini sağlar. Böyle bir yapı, özellikle büyük veri işlemlerinde veya ağ çağrılarında, kaynakların verimli kullanılmasını sağlar.

Queue mantığını Bash'ta temel olarak dizi veya dosya tabanlı bir yapı ile uygulayabiliriz. En yaygın yöntemlerden biri, belirli bir dizin veya dosya kullanarak "iş listesi" oluşturmak ve bu liste üzerinden işlemleri sırasıyla yürütmektir. Her job, bir dosya veya satır olarak temsil edilir. Script, bu job'ları okur, işler ve tamamlandığında siler veya başka bir klasöre taşır.

Örneğin, aşağıdaki gibi bir dizin yapısı kurabiliriz:

CÓDIGO
123456
jobs/
    job1.txt
    job2.txt
    ...
done/


İşleme scripti ise şu mantıkla çalışır: jobs klasöründeki ilk job'ı alır, işler, tamamladıktan sonra done klasörüne taşır. Bu sayede, işlemler sırayla ve kolaylıkla takip edilir.

Bash'ta bu mantığı aşağıdaki gibi kodlayabilirsiniz:

CÓDIGO
12345678910111213141516171819202122232425262728
#!/bin/bash

JOB_DIR="./jobs"
DONE_DIR="./done"

mkdir -p "$JOB_DIR" "$DONE_DIR"

while true; do
    # İlk job'u seç
    job=$(ls "$JOB_DIR" | head -n 1)
    if [ -z "$job" ]; then
        echo "Tüm işler tamamlandı."
        break
    fi

    echo "İşleniyor: $job"
    # İşlemi burada tanımla, örneğin:
    cat "$JOB_DIR/$job" | while read line; do
        echo "İşleniyor: $line"
        # İşlem kodları
    done

    # Job tamamlandıktan sonra taşımak
    mv "$JOB_DIR/$job" "$DONE_DIR/$job"
    echo "$job tamamlandı."
    sleep 1 # kaynak kullanımını azaltmak için
done


Bu yapı, scriptin sürekli olarak yeni job'lar olup olmadığını kontrol etmesini sağlar. Ayrıca, hata durumlarında tekrar deneme veya belirli bir fail sayısına ulaşınca raporlama gibi ek özellikler de eklenebilir.

Kullanımda dikkat edilmesi gereken noktalar:

  • İşlem sırasında oluşabilecek hataları yakalamak ve uygun şekilde yönetmek
  • Çoklu script veya process'in aynı job dizisine erişmesini önlemek (mutex veya kilit mekanizması)
  • Job'ların bağımsız ve tekrar edilebilir olması


Bu temel yapı, Bash ile basit ama etkili bir queue mantığı kurmanıza olanak tanır. Sizce bu yapıya eklenebilecek en faydalı geliştirmeler veya karşılaştığınız sorunlar nelerdir?

Debes haber iniciado sesión para responder.

0 citas seleccionadas