Sonlu olmayan komut dosyası


0

Linux sunucularındaki bazı yapılandırmaları bir listeden kontrol etmek için bir komut dosyası yazdım. Listede çok fazla sunucu var, bu yüzden bu listeyi 10'a 10'a böldüm:

...
...
for ((i=0; i <= $serverCounter; i+=15))
do
    if [ $i -ge $serverCounter ]
    then
            exit
    else
            echo $i
            Kontrol $list &
            ((first+=15))
            ((last+=15))
    fi
done
...
...

Ancak bu durumda bu döngüden çıkamıyorum. Çıkmak için bir if koşulu eklediğimi görebilirsiniz ama işe yaramadı (neden olduğunu bilmiyorum).

EOL de "&" den ayrılmadan bu döngüden nasıl çıkarım?


5
Testiniz $i -ge $serverCounterdöngü içinde biri (burada sadece durum yakalar birlikte fazla $i -eq $serverCounter). Kodunuz yazıldığı gibi hala N'nin Kontrolnerede olduğuna dair N paralel örnekleri başlayacaktır serverCounter/15, bu nedenle probleminiz tüm bu örneklerin sonunda sisteminizi aşırı yüklemesi olabilir ve döngüyü devam ettirmek için yeterli CPU'nuz kalmamış olabilir. Kontrol'de aynı anda çalışan K örneklerinden daha fazlasına sahip olmak için daha karmaşık bir şey yazmanız gerekebilir.
ksenoid

1
Döngünüz, olduğu gibi sınırlı miktarda çalışacaktır. ServerCounter'dan daha büyük olamayacağım, çünkü serverCounter'a olduğu gibi eşit veya daha büyük olduğunda var olacaktır.
Ramhound

Aslında koşma ve bitirme konusunda bir sorun yok. Süreci ps -ef'te göremiyorum, bu yüzden komut dosyası bitebilir ancak son kontrolden sonra bash ekranına düşemiyorum. sadece imleç yanıp sönüyor. Sorun "&" yönlendirme üzerinde sanırım.
Gefolge

yes @Ramhound Bunu biliyorum ama bu problemden sonra o satırı ekledim. Yani evet eğer if ifadesini giremiyorum ama yine de koşuldan önce döngüden çıkamadım.
Gefolge

@Gololge - Çıkış koşulunuz, döngüyü kesen veya devam ettiren ek bir koşullu olmadıkça, döngünün her tekrarlaması için yalnızca bir kez değerlendirilir.
Ramhound
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.