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.
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
sudo systemctl status ssh
Nginx için:
sudo systemctl status nginx
4. Servis Başlatma
sudo systemctl start nginx
Komut başarılı olduğunda servis mevcut oturumda çalışmaya başlar.
5. Servis Durdurma
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
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
sudo systemctl reload nginx
Reload destekleyen servislerde süreç tamamen durdurulmadan yapılandırma yeniden okunabilir.
8. Açılışta Otomatik Başlatma
sudo systemctl enable nginx
Servisi hemen başlatıp açılışa da eklemek için:
sudo systemctl enable --now nginx
9. Otomatik Başlatmayı Kapatma
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?
systemctl is-active nginx
Otomatik başlangıç durumunu kontrol etmek için:
systemctl is-enabled nginx
11. Çalışan Servisleri Listeleme
systemctl --type=service --state=running
Tüm servis unit'lerini görmek için:
systemctl list-units --type=service --all
12. Hatalı Servisleri Görme
systemctl --failed
Başlatılamayan servisleri hızlı şekilde tespit etmek için kullanışlıdır.
13. journalctl ile Servis Logları
sudo journalctl -u nginx
Son 50 kayıt:
sudo journalctl -u nginx -n 50
14. Logları Canlı İzleme
sudo journalctl -u nginx -f
Ctrl+C ile canlı izleme
sonlandırılır.
15. Belirli Zamandaki Loglar
sudo journalctl -u nginx --since "1 hour ago"
Bugünkü kayıtlar:
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
systemctl cat nginx
Servisin systemd tarafından kullanılan tanımını görüntüler.
18. daemon-reload
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:
sudo nano /usr/local/bin/merhaba-servisi.sh
Script içeriği:
#!/bin/bash
while true; do
echo "Servis çalışıyor: $(date)"
sleep 60
done
Çalıştırma izni verin:
sudo chmod +x /usr/local/bin/merhaba-servisi.sh
20. Özel systemd Unit Dosyası
[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
sudo systemctl daemon-reload
sudo systemctl enable --now merhaba.service
sudo systemctl status merhaba.service
22. Özel Servisin Loglarını Görme
sudo journalctl -u merhaba.service -f
23. Servis Bağımlılıkları
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:
sudo systemctl mask servis-adi
Engeli kaldırmak için:
sudo systemctl unmask servis-adi
Kritik sistem servislerini mask etmeden önce bağımlılıklarını kontrol edin.
25. Servis ve Süreç İlişkisi
systemctl status nginx
Süreçleri ayrıca görüntülemek için:
ps aux | grep nginx
26. Servisin Dinlediği Portları Görme
sudo ss -lntup
Belirli bir port için:
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:
sudo nginx -t
Test başarılıysa:
sudo systemctl reload nginx
28. SSH Servisi Örneği
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
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?
-
systemctl status servis-adiile durumu kontrol edin. -
journalctl -u servis-adiile logları okuyun. - Yapılandırma dosyasında hata olup olmadığını kontrol edin.
- Port çakışmasını inceleyin.
- Dosya izinlerini kontrol edin.
- Bağımlılıkların çalıştığını doğrulayın.
- Disk alanı ve sistem kaynaklarını kontrol edin.
31. Uygulamalı Servis Yönetimi Laboratuvarı
- Çalışan servisleri listeleyin.
- SSH servisinin durumunu kontrol edin.
- Nginx gibi bir test servisinin durumunu görüntüleyin.
- Servisi durdurup tekrar başlatın.
-
Dinleyen portu
ssile doğrulayın. -
Servis loglarını
journalctlile inceleyin. - Otomatik başlangıç durumunu kontrol edin.
- 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.