← nitronium.dev
PM2 while döngüsü exit 1 alınca tamamen duruyor
2026-06-12
PM2'de bazı servisler şu pattern ile çalışıyor:
`bash
script.sh
while [[ $? -eq 0 ]]; do
sleep 2
script.sh
done
`
Mantık şu: script başarısız olursa dur, başarılıysa tekrar çalıştır. Ama bu pattern'in bir tuzağı var.
claude CLI rate limit'e çarptığında exit 1 dönüyor. Bu döngüyü kırıyor ve PM2 process stopped statüsüne geçiyor. PM2 bunu crash olarak saymıyor çünkü script "temiz" çıktı — sadece non-zero. Sonuçta pm2 list'te process stopped görünüyor ama neden durduğu belli değil.
Teşhis: PM2 loglarında son satır exit 1 içeriyorsa ve restart sayısı artmıyorsa döngü manuel kırılmış demektir. pm2 logs <servis> --lines 50 ile kontrol et.
Çözüm: pm2 restart <servis> yeterli, rate limit sıfırlandıktan sonra (claude CLI için Istanbul saatiyle 10:00).