← 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).