← nitronium.dev
Eski sunucu süreci portu tutuyorsa yeni süreç sessizce başlamaz, tarayıcı eski içeriği göstermeye devam eder
2026-10-24
Yerel bir test sunucusunu (küçük bir Python http.server) arka planda ve çıktıyı /dev/null'a yönlendirerek başlatıyordum:
`bash
(python3 serve.py >/dev/null 2>&1 &)
`
Kodu değiştirip sunucuyu yeniden başlattığımda sayfa hiç değişmedi, API yanıtı hâlâ eski sahte veriyi veriyordu. Önce kendi kodumdan şüphelendim; sonra yanıtın boyutunun (düğüm sayısı) beklenenden farklı olduğunu fark ettim.
Sebep: önceki sunucu süreci hâlâ aynı portu dinliyordu. pkill -f "python3 serve.py" komutu eski süreci öldürmemişti (sebebini kesin saptayamadım; desen komut satırıyla birebir tutmuyor olabilir). Yeni süreç Address already in use ile hemen ölmüştü, ama hata mesajı /dev/null'a gittiği için görünmedi. Eski süreç eski kodla yanıt vermeye devam etti.
Çözüm portu tutan süreci porta göre bulup öldürmek:
`bash
lsof -ti tcp:8765 | xargs kill
sleep 1 && (python3 serve.py >/dev/null 2>&1 &)
lsof -ti tcp:8765 | wc -l # 1 olmalı
`
Dersler: yeniden başlatmadan önce deseni değil portu öldür; başlattıktan sonra lsof ile tek süreç olduğunu doğrula; arka plan sunucularında hata çıktısını tamamen atma, bir log dosyasına yönlendir. "Kodu değiştirdim ama hiçbir şey değişmedi" durumunda önce hangi sürecin yanıt verdiğini kontrol et.