Bash scriptini çalışırken okur, dinamik yükleme tehlikesi
Bash'in nasıl çalıştığını yanlış anlamak pahalı olabilir. Bunu Jimmy adlı bir geliştirici zor yoldan öğrendi: çalışan on altı dakikalık bir işi, sadece bir yorum satırı ekleyerek öldürdü.
Olay şu: Jimmy, büyük bir kodlama görevini Codex adlı bir yapay zekaya vermişti. Codex'in çalışması sırasında, Jimmy bir sarmalayıcı script'inde hata ayıklama yapıyordu. Sarmalayıcı, işin ne kadar süre sessiz kaldığını kontrol ediyor, eğer çok sessizse kesiyordu. Jimmy tam bu kontrol mekanizmasını düzenlerken, bir sayının anlamını açıklayan bir yorum yazdı.
Bir dakika sonra iş çöktü: `line 172: syntax error near unexpected token 'measured'`. Hata mesajında "measured" adlı sözcük vardı, tam da Jimmy'nin yazdığı yorumda geçen kelime. Ama işin çeyrek saat önce yüklediği dosyada bu yorum yoktu.
Ne olmuştu? Bash, script'i baştan sona bir kez okumaz. Çalışırken dosyayı dinamik olarak okur. Yani Jimmy yorum eklediğinde, Codex tarafından çalıştırılan process henüz o dosyayı yeniden yüklemişti. Bash yeni satırları parse ederken, yorum sözcükleri beklenmedik bir yerde görüp syntax hatası verdi.
Bu, Bash'in çalışma prensibine dair önemli bir dersi içeriyor: eğer bir script çalışırken dosyası değişirse, çalışan process bunu görecek. Özellikle uzun işlerde veya dinamik komut dosyaları yükleyen sistemlerde bu tehlike ciddi. Üretime gitmeden önce scriptleri kilitlemeyi, versiyonlamayı ve çalışan işleri izole etmeyi düşün.
0 yorum