Linux Sistem Yönetimi

Linux Servis Yönetimi

Linux sistemlerde systemd ve systemctl kullanarak servisleri görüntülemeyi, başlatmayı, durdurmayı, yeniden başlatmayı, otomatik başlangıcı yönetmeyi ve journalctl ile logları incelemeyi öğrenin.

1. Linux Servisi Nedir?

Linux'ta servis, genellikle arka planda çalışan ve sistem veya kullanıcılar için belirli bir görev gerçekleştiren süreçtir.

SSH, Nginx, Docker, cron ve veritabanı sunucuları yaygın servis örnekleridir.

systemd

Modern Linux dağıtımlarının çoğu servis ve sistem başlangıç yönetimi için systemd kullanır.

2. systemd Nedir?

systemd, sistem açılışı, servisler, bağımlılıklar, zamanlayıcılar ve loglama gibi görevleri yöneten init sistemidir.

Servis yönetiminde temel komut systemctl aracıdır.

3. Servis Durumunu Kontrol Etme

bash
sudo systemctl status ssh

Nginx için:

bash
sudo systemctl status nginx

4. Servis Başlatma

bash
sudo systemctl start nginx

Komut başarılı olduğunda servis mevcut oturumda çalışmaya başlar.

5. Servis Durdurma

bash
sudo systemctl stop nginx

Servisi durdurmadan önce uygulamanın aktif bağlantılarını ve bağımlılıklarını kontrol edin.

6. Servisi Yeniden Başlatma

bash
sudo systemctl restart nginx

Yapılandırma değişikliklerinden sonra sıklıkla kullanılır.

7. Servis Yapılandırmasını Yeniden Yükleme

bash
sudo systemctl reload nginx

Reload destekleyen servislerde süreç tamamen durdurulmadan yapılandırma yeniden okunabilir.

8. Açılışta Otomatik Başlatma

bash
sudo systemctl enable nginx

Servisi hemen başlatıp açılışa da eklemek için:

bash
sudo systemctl enable --now nginx

9. Otomatik Başlatmayı Kapatma

bash
sudo systemctl disable nginx

Bu işlem çalışan servisi otomatik olarak durdurmaz. Gerekirse ayrıca systemctl stop kullanılır.

10. Servis Aktif mi?

bash
systemctl is-active nginx

Otomatik başlangıç durumunu kontrol etmek için:

bash
systemctl is-enabled nginx

11. Çalışan Servisleri Listeleme

bash
systemctl --type=service --state=running

Tüm servis unit'lerini görmek için:

bash
systemctl list-units --type=service --all

12. Hatalı Servisleri Görme

bash
systemctl --failed

Başlatılamayan servisleri hızlı şekilde tespit etmek için kullanışlıdır.

13. journalctl ile Servis Logları

bash
sudo journalctl -u nginx

Son 50 kayıt:

bash
sudo journalctl -u nginx -n 50

14. Logları Canlı İzleme

bash
sudo journalctl -u nginx -f

Ctrl+C ile canlı izleme sonlandırılır.

15. Belirli Zamandaki Loglar

bash
sudo journalctl -u nginx --since "1 hour ago"

Bugünkü kayıtlar:

bash
sudo journalctl -u nginx --since today

16. Unit Dosyaları

systemd servis tanımları unit dosyalarında tutulur. Yaygın dizinler:

  • /usr/lib/systemd/system/
  • /lib/systemd/system/
  • /etc/systemd/system/

Yerel yönetici tarafından oluşturulan veya özelleştirilen unit'ler için /etc/systemd/system/ tercih edilir.

17. Servis Unit Dosyasını Görme

bash
systemctl cat nginx

Servisin systemd tarafından kullanılan tanımını görüntüler.

18. daemon-reload

bash
sudo systemctl daemon-reload

Unit dosyası oluşturulduktan veya değiştirildikten sonra systemd yöneticisinin tanımları yeniden okumasını sağlar.

19. Basit Özel Servis Oluşturma

Örnek bir script oluşturun:

bash
sudo nano /usr/local/bin/merhaba-servisi.sh

Script içeriği:

bash
#!/bin/bash
while true; do
    echo "Servis çalışıyor: $(date)"
    sleep 60
done

Çalıştırma izni verin:

bash
sudo chmod +x /usr/local/bin/merhaba-servisi.sh

20. Özel systemd Unit Dosyası

ini
[Unit]
Description=Ornek Merhaba Servisi
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/merhaba-servisi.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

Dosyayı /etc/systemd/system/merhaba.service olarak kaydedin.

21. Özel Servisi Etkinleştirme

bash
sudo systemctl daemon-reload
sudo systemctl enable --now merhaba.service
sudo systemctl status merhaba.service

22. Özel Servisin Loglarını Görme

bash
sudo journalctl -u merhaba.service -f

23. Servis Bağımlılıkları

bash
systemctl list-dependencies nginx

Bir servisin ilişkili unit ve target bağımlılıklarını incelemek için kullanılabilir.

24. Mask ve Unmask

Bir servisin manuel veya bağımlılık yoluyla başlatılmasını tamamen engellemek için:

bash
sudo systemctl mask servis-adi

Engeli kaldırmak için:

bash
sudo systemctl unmask servis-adi
Dikkat

Kritik sistem servislerini mask etmeden önce bağımlılıklarını kontrol edin.

25. Servis ve Süreç İlişkisi

bash
systemctl status nginx

Süreçleri ayrıca görüntülemek için:

bash
ps aux | grep nginx

26. Servisin Dinlediği Portları Görme

bash
sudo ss -lntup

Belirli bir port için:

bash
sudo ss -lntp | grep ':80 '

27. Yapılandırmayı Test Etme

Bir servisi yeniden başlatmadan önce desteklenen yapılandırma testini çalıştırmak iyi bir uygulamadır.

Nginx örneği:

bash
sudo nginx -t

Test başarılıysa:

bash
sudo systemctl reload nginx

28. SSH Servisi Örneği

bash
sudo systemctl status ssh
sudo ss -lntp | grep ':22 '

Uzak sunucuda SSH servisini yeniden başlatırken mevcut bağlantınızı kaybetme riskini göz önünde bulundurun.

29. Docker Servisi Örneği

bash
sudo systemctl status docker
sudo systemctl restart docker

Docker servisini yeniden başlatmak çalışan container'ları etkileyebilir. Üretim sistemlerinde işlem öncesinde etkisini değerlendirin.

30. Servis Başlamıyorsa Ne Yapılır?

  1. systemctl status servis-adi ile durumu kontrol edin.
  2. journalctl -u servis-adi ile logları okuyun.
  3. Yapılandırma dosyasında hata olup olmadığını kontrol edin.
  4. Port çakışmasını inceleyin.
  5. Dosya izinlerini kontrol edin.
  6. Bağımlılıkların çalıştığını doğrulayın.
  7. Disk alanı ve sistem kaynaklarını kontrol edin.

31. Uygulamalı Servis Yönetimi Laboratuvarı

  1. Çalışan servisleri listeleyin.
  2. SSH servisinin durumunu kontrol edin.
  3. Nginx gibi bir test servisinin durumunu görüntüleyin.
  4. Servisi durdurup tekrar başlatın.
  5. Dinleyen portu ss ile doğrulayın.
  6. Servis loglarını journalctl ile inceleyin.
  7. Otomatik başlangıç durumunu kontrol edin.
  8. Basit özel systemd servisini oluşturup çalıştırın.

32. Komut Özeti

İşlem Komut
Durum systemctl status servis
Başlat systemctl start servis
Durdur systemctl stop servis
Yeniden başlat systemctl restart servis
Reload systemctl reload servis
Otomatik başlat systemctl enable servis
Otomatik başlatmayı kapat systemctl disable servis
Loglar journalctl -u servis

33. Sonuç

Bu dokümanda Linux servis yönetiminin temelini oluşturan systemd ve systemctl, servis başlatma ve durdurma, otomatik başlangıç, journalctl logları, unit dosyaları ve özel servis oluşturma konuları ele alındı.

Servis yönetimini öğrenmek; Linux sunucu yönetimi, Docker altyapıları, web sunucuları ve sistem sorun giderme çalışmalarında temel becerilerden biridir.

© 2026 Kemal Tokmak — Gerçek Deneyimler, Gerçek Dokümantasyon