Bash ile Sinyal Yakalama ve Graceful Shutdown

0 الردود 4 المشاهدات
·
المشاركون
صاحب الموضوع #0
Skriptlerde güvenli ve düzgün kapanış işlemleri yapmak, özellikle uzun süre çalışan veya sistem kaynaklarına erişim sağlayan işlemler için kritik öneme sahiptir. Bash ortamında bu, genellikle sinyal yakalama ve bunun üzerine uygun kapanış adımlarını tanımlama ile sağlanır.

İlk olarak, Bash scriptleri belirli sinyalleri yakalayabilir. En çok kullanılanlar SIGINT (Ctrl+C), SIGTERM (yönetimsel durdurma), ve SIGQUIT’tir. Bu sinyalleri yakalamak ve belirli fonksiyonlar çalıştırmak için trap komutu kullanılır. Örneğin:

CODE
12
trap 'cleanup' SIGINT SIGTERM


Burada cleanup isimli fonksiyon, ilgili sinyaller alındığında çağrılır. Bu fonksiyon içinde, açık dosya kapatma, arka plan işlemlerini durdurma veya sistem durumunu kaydetme gibi adımlar yer alabilir.

Graceful shutdown sırasında önemli olan birkaç noktaya değinmek gerekirse:

  • İşlemlerin tamamlanması: Script, herhangi bir kritik işlemi durdurmadan önce tamamlamalıdır. Örneğin, veri kaybını önlemek için dosya veya veritabanı işlemlerini düzgün sonlandırmalı.


  • Kaynakların serbest bırakılması: Açık dosya tanıtıcıları, bağlantılar veya arka plan işlemleri düzgün şekilde kapatılmalı.


  • Durum kaydı: Kapanış sırasında log tutulmalı veya durum kaydı alınmalı, böylece sistem durumu sonraki süreçlerde izlenebilir hale gelir.


Örnek bir uygulama:

CODE
12345678910111213141516171819
#!/bin/bash

function cleanup() {
    echo "Sinyal yakalandı, kapanış işlemleri başlatılıyor..."
    # Örnek: arka plan işlemlerini durdur
    kill "$child_pid"
    wait "$child_pid"
    echo "Temizlik tamamlandı. Çıkış yapılıyor."
    exit 0
}

trap 'cleanup' SIGINT SIGTERM

[b]Uzun süren işlem veya döngü[/b]
while true; do
    # İşlemler burada
    sleep 1
done


Bu yapı, script kapanmadan önce gerekli adımları atar ve sistemin düzgün kapanmasını sağlar. Ayrıca, arka plan işlemleri veya başka kaynaklar kullanılırken, bunların da kontrol edilmesi önemli.

Sinyal yakalama ve graceful shutdown, özellikle kritik altyapı, sunucu veya otomasyon scriptleri geliştirenler için olmazsa olmazdır. Siz bu konuda deneyimlerinizi veya karşılaştığınız sorunları nasıl çözdüğünüzü paylaşır mısınız?

يجب تسجيل الدخول للرد.

0 اقتباسات محددة