# systemd servisi başlamıyor: systemctl status ve journalctl ile hata bulma

https://kervanhosting.com/bilgi-bankasi/makale/systemd-servisi-baslamiyor-systemctl-status-ve-journalctl-ile-hata-bulma

Bir servisi başlatmaya çalışıyorsunuz ve `systemctl start uygulama` ya hata veriyor ya da servis "failed" durumuna düşüyor. Doğru yaklaşım tahmin etmek değil, sistemin kaydettiği hatayı okumaktır. İki komut hemen her sorunu açıklar.

## 1. Durumu görün

```
systemctl status uygulama
```

Çıktıdaki `Active:` satırı durumu söyler: `active (running)` çalışıyor, `failed` başarısız, `activating (auto-restart)` sürekli çöküp yeniden başlıyor demektir. Altında son birkaç günlük satırı ve `Process: ... status=203/EXEC` gibi bir çıkış kodu bulunur.

## 2. Tam günlüğü okuyun

```
sudo journalctl -u uygulama -n 50 --no-pager
sudo journalctl -xeu uygulama
```

İlk komut servisin son 50 satırını, ikincisi (`-xe`) ayrıntılı açıklamalı son kayıtları gösterir. Bir sonraki denemeyi izlemek için ayrı bir pencerede `sudo journalctl -fu uygulama` çalıştırın (`-f` canlı akış). Programın kendi hata çıktısı genellikle buraya düşer.

## Çıkış koduna göre sebepler

- **203/EXEC:** systemd `ExecStart` satırındaki programı çalıştıramadı. Dosya yok, yol yanlış, dosyanın çalıştırma izni yok (`chmod +x`) ya da betiğin ilk satırı (`#!/usr/bin/env python3`) hatalı. Yolu elle kontrol edin: `ls -l /srv/uygulama/venv/bin/gunicorn`.
- **217/USER:** Servis dosyasında belirtilen `User=` sistemde yok. `getent passwd www-data` ile kullanıcıyı kontrol edin.
- **200/CHDIR:** `WorkingDirectory` klasörü yok ya da erişilemiyor.
- **1 ya da 2:** Program kendisi hatayla çıktı. Günlükteki mesaj nedenini yazar (eksik paket, hatalı ayar, kullanılan port).
- **"Address already in use":** Port zaten kullanımda: `sudo ss -tlnp | grep 8000`.
- **"Permission denied":** Kullanıcının dosya ya da klasöre erişim izni yok. Sahibi ve izinleri düzeltin: [dosya izinleri](https://kervanhosting.com/bilgi-bankasi/makale/linux-dosya-izinleri-chmod-chown-rakamlari-ve-sorunlari).
- **Sürekli yeniden başlıyor:** `Restart=on-failure` ile döngüye girmiş olabilir. Bir sınır aşılınca systemd "start request repeated too quickly" der; hatayı düzeltip `sudo systemctl reset-failed uygulama` ile sayacı sıfırlayın.

## Servis dosyasını denetleyin

```
systemd-analyze verify /etc/systemd/system/uygulama.service
```

Bu komut söz dizimi hatalarını ve eksik yolları, servisi başlatmadan bildirir (ör. "Command ... is not executable: No such file or directory"). Dosyayı her değiştirdiğinizde `sudo systemctl daemon-reload` çalıştırmayı unutmayın; aksi halde systemd eski halini kullanır.

## Elle çalıştırarak deneyin

Servisi çalıştıran kullanıcıyla komutu elle çalıştırmak çoğu zaman hatayı doğrudan ekrana basar:

```
sudo -u www-data /srv/uygulama/venv/bin/gunicorn --bind 127.0.0.1:8000 uygulama:app
```

Elle çalışıp serviste çalışmıyorsa fark ortam değişkenlerinde (servis temiz bir ortamla başlar), çalışma klasöründe ya da kullanıcı izinlerindedir. Servis yazımı için örnek: [Gunicorn ve systemd](https://kervanhosting.com/bilgi-bankasi/makale/python-flask-django-uygulamasini-gunicorn-ve-systemd-ile-yayinlama). Sunucu açılışında servisin başlaması için `sudo systemctl enable uygulama` gerekir.

## Sık sorulanlar

### journalctl hiçbir şey göstermiyor.

Yetkisiz kullanıcı yalnızca kendi kayıtlarını görür; `sudo` kullanın. Kalıcı günlük kapalıysa yeniden başlatma sonrası eski kayıtlar silinir: `sudo mkdir -p /var/log/journal`.

### Servis çalışıyor ama uygulama cevap vermiyor.

Port ya da bağlama adresi (`127.0.0.1` ya da `0.0.0.0`) yanlış olabilir; `ss -tlnp` ile kontrol edin ve güvenlik duvarına bakın.

### Eski bir servis dosyasını silemiyorum.

Dosyayı silin, `sudo systemctl daemon-reload` ve `sudo systemctl reset-failed` çalıştırın. Etkin bağlantı için önce `sudo systemctl disable --now adi`.

**İlgili makaleler**

- [Python Flask ya da Django uygulamasını Gunicorn ve systemd ile yayınlama](https://kervanhosting.com/bilgi-bankasi/makale/python-flask-django-uygulamasini-gunicorn-ve-systemd-ile-yayinlama)
- [Bir programı arka planda sürekli çalıştırma (screen, systemd)](https://kervanhosting.com/bilgi-bankasi/makale/bir-programi-arka-planda-surekli-calistirma-screen)
- [Nginx 502 Bad Gateway hatası: nedenleri ve çözümü](https://kervanhosting.com/bilgi-bankasi/makale/nginx-502-bad-gateway-hatasi-nedenleri-ve-cozumu)

*Sorununuz çözülmediyse [destek talebi açın](https://kervanhosting.com/destek-taleplerim). Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.*
