systemd'de Servis Yönetimi¶
Bu makalede
systemd çoğu modern Linux dağıtımında standart init sistemi ve servis yöneticisidir:
- Ubuntu 16.04+ (Ubuntu 20.04/22.04/24.04 önerilir)
- Debian 8+ (Debian 11/12 – mevcut LTS sürümleri)
- RHEL/CentOS 7+ (RHEL 9 / AlmaLinux/Rocky Linux 9 – modern CentOS yerleri)
- Fedora, openSUSE, Arch ve diğerleri
Çekirdek önyüklemesinin ardından, kontrolü systemd (PID 1) alır, bu da sorumludur:
- servisleri başlatmak ve durdurmak,
- dosya sistemlerini bağlamak,
- ağ ve ortamı yapılandırmak,
- bileşenler arasındaki bağımlılıkları yönetmek.
systemd ile etkileşim kurmanın ana arayüzü systemctl aracıdır.
Temel Sözdizimi¶
Not
Çoğu durumda, systemctl kullanmak için süper kullanıcı ayrıcalıkları gerekir—sudo kullanın.
Servis Durumunu Görüntüleme¶
| Görev | Komut |
|---|---|
| aktif birimler (servisler, soketler, zamanlayıcılar vb.) listesi | systemctl list-units |
| Sadece çalışan servisler | systemctl list-units --type=service |
| Tüm servisler (durdurulmuş ve pasif dahil) | systemctl list-units --type=service --all |
| Çalışan servisleri listele | systemctl list-units --type=service --state=running |
| Belirli bir servis arama (örneğin nginx) | systemctl list-units '*nginx*' |
| Bir servis hakkında ayrıntılı bilgi | systemctl status nginx (loglar, PID, bağımlılıklar dahil) |
Not
Çıktının sayfalama önlenmesi için --no-pager ekleyin (örn. systemctl status nginx --no-pager).
Servis Işlemlerini Yönetme¶
nginx örnek olarak kullanılacak, ancak komutlar herhangi bir servis için geçerlidir: sshd, postgresql, clamav-daemon, docker vb.
| Eylem | Komut | Not |
|---|---|---|
| Durumu kontrol et | sudo systemctl status nginx | Çalışıp çalışmadığını, PID'sini, son logları ve hataları gösterir |
| Başlat | sudo systemctl start nginx | Servisi bir sonraki yeniden başlatma kadar çalıştırır |
| Durdur | sudo systemctl stop nginx | |
| Yeniden başlat | sudo systemctl restart nginx | Tam durdurma → başlatma (eğer çalışmıyorsa başlatır) |
| Durdurmadan yapılandırmayı yeniden yükle | sudo systemctl reload nginx | Servis SIGHUP destekliyorsa çalışır (nginx, Apache, Postfix vb.) |
| Yeniden yükle veya yeniden başlat | sudo systemctl reload-or-restart nginx | reload desteklenmezse restarte geri döner |
| Yeniden başlatmayı dene (sadece çalışıyorsa) | sudo systemctl try-restart nginx | Betikler için güvenli |
| Servisin aktif olup olmadığını kontrol et | systemctl is-active nginx | Çıktı: active / inactive / unknown |
| Servisin başarısız olup olmadığını kontrol et | systemctl is-failed nginx | Çıktı: failed eğer servis bir hata ile çıkmışsa |
Not
startrestart sonrası servis yeniden başlatma sırasında otomatik olarak başlatılmayacak—otomatik başlatma ayrı yapılandırma gerektirir.
Otomatik Başlatmayı Yönetme¶
| Eylem | Komut | Ne Olur |
|---|---|---|
| Otomatik Başlatmayı Etkinleştir | sudo systemctl enable nginx | /usr/lib/systemd/system/nginx.service dosyasından /etc/systemd/system/multi-user.target.wants/ klasörüne bir sembolik bağlantı oluşturur |
| Otomatik Başlatmayı Devre Dışı Bırak | sudo systemctl disable nginx | Bağlantıyı kaldırır ancak çalışan süreci durdurmaz |
| Otomatik Başlatma Durumunu Kontrol Et | systemctl is-enabled nginx | Olası değerler: enabled, disabled, static, masked |
| Ayarları Sıfırla → Yeniden Etkinleştir | sudo systemctl reenable nginx | Önceki geçersiz kılmaları temizler ve hizmeti yeniden etkinleştirir |
| Varsayılanı Sıfırla | sudo systemctl preset nginx | Özel ayarları dağıtım varsayılanına geri döndürür (nadiren kullanılır) |
Gelişmiş Özellikler¶
1. systemd Yapılandırmasını Zorla Yeniden Yükleme¶
Eğer bir .service dosyasını düzenlediyseniz:
2. Bağımlılıkları Görüntüleme¶
3. Servis Günlüğü (journalctl ile)¶
4. Bir Servisi Mask Etme (Tamamen Devre Dışı Bırakma, El ile de)¶
Günlük Kullanım Için Faydalı Komutlar¶
# Hızlıca servis etkin ve çalışıyor mu kontrol edin
systemctl is-active --quiet nginx && echo "OK" || echo "STOPPED"
# Tek komutla başlat ve otomatik başlatmayı etkinleştir
sudo systemctl start nginx && sudo systemctl enable nginx
# Servisi durdur ve otomatik başlatmayı devre dışı bırak
sudo systemctl stop nginx && sudo systemctl disable nginx
Not
--now bayrağı (systemd v220+, 2015'ten beri) aynı anda enable + start veya disable + stop yapar.