systemd'de Hizmetleri Yönetme¶
Bu makalede - Temel Söz Dizimi - Hizmet Durumunu Görüntüleme - Hizmet İşlemini Yönetme - Otomatik Başlatmayı Yönetme - Gelişmiş Özellikler - Günlük Kullanım İçin Faydalı Komutlar
systemd, çoğu modern Linux dağıtımında standart init sistemi ve hizmet yöneticisidir:
- Ubuntu 16.04+ (Ubuntu 20.04/22.04/24.04 şiddetle önerilir)
- Debian 8+ (Debian 11/12 – güncel LTS sürümleri)
- RHEL/CentOS 7+ (RHEL 9 / AlmaLinux/Rocky Linux 9 – modern CentOS alternatifleri)
- Fedora, openSUSE, Arch ve diğerleri
Çekirdek (kernel) yüklendikten sonra kontrolü systemd'ye (PID 1) devreder; bu da şunlardan sorumludur:
- hizmetleri başlatma ve durdurma,
- dosya sistemlerini bağlama,
- ağ ve ortamı yapılandırma,
- bileşenler arasındaki bağımlılıkları yönetme.
systemd ile etkileşim kurmak için kullanılan temel arayüz, systemctl yardımcı programıdır.
Temel Söz Dizimi¶
Not
Çoğu durumda systemctl kullanmak için süper kullanıcı yetkileri gerekir—sudo kullanın.
Hizmet Durumunu Görüntüleme¶
| Görev | Komut |
|---|---|
| Aktif birimleri (hizmetler, soketler, zamanlayıcılar vb.) listele | systemctl list-units |
| Sadece çalışan hizmetler | systemctl list-units --type=service |
| Tüm hizmetler (durdurulmuş ve pasif olanlar dahil) | systemctl list-units --type=service --all |
| Çalışan hizmetleri listele | systemctl list-units --type=service --state=running |
| Belirli bir hizmeti ara (ör. nginx) | systemctl list-units '*nginx*' |
| Bir hizmet hakkında detaylı bilgi | systemctl status nginx (günlükler, PID, bağımlılıklar dahil) |
Not
Çıktının sayfalara bölünmesini önlemek için --no-pager ekleyin (ör. systemctl status nginx --no-pager).
Hizmet İşlemini Yönetme¶
Örnek olarak nginx kullanacağız, ancak komutlar herhangi bir hizmet 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 günlükleri ve hataları gösterir |
| Başlat | sudo systemctl start nginx | Bir sonraki yeniden başlatmaya kadar hizmeti başlatır |
| Durdur | sudo systemctl stop nginx | |
| Yeniden başlat | sudo systemctl restart nginx | Tam durdur > başlat (çalışmıyorsa başlatır) |
| Durdurmadan yapılandırmayı yeniden yükle | sudo systemctl reload nginx | Hizmet SIGHUP destekliyorsa çalışır (nginx, Apache, Postfix vb.) |
| Yeniden yükle veya yeniden başlat | sudo systemctl reload-or-restart nginx | reload desteklenmiyorsa restart'a düşer |
| Yeniden başlatmayı dene (sadece çalışıyorsa) | sudo systemctl try-restart nginx | Komut dosyaları için güvenlidir |
| Hizmetin aktif olup olmadığını kontrol et | systemctl is-active nginx | Çıktı: active / inactive / unknown |
| Hizmetin başarısız olup olmadığını kontrol et | systemctl is-failed nginx | Hizmet hata ile çıkarsa çıktı: failed |
Not
start/restart işleminden sonra hizmet yeniden başlatmada otomatik olarak başlamaz—otomatik başlatma için ayrı yapılandırma gerekir.
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/ dizinine bir sembolik bağlantı oluşturur |
| Otomatik başlatmayı devre dışı bırak | sudo systemctl disable nginx | Sembolik bağlantıyı kaldırır ancak çalışan işlemi 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ılana sıfırla | sudo systemctl preset nginx | Herhangi bir özel ayarı dağıtım varsayılanına geri döndürür (nadiren kullanılır) |
Gelişmiş Özellikler¶
1. systemd Yapılandırma Yeniden Yükleme Zorlaması¶
Bir .service dosyasını düzenlediyseniz:
2. Bağımlılıkları Görüntüleme¶
3. Hizmet Günlüğü (journalctl aracılığıyla)¶
4. Bir Hizmeti Maskelama (Tamamen Devre Dışı Bırakma, Manuel Olarak Bile)¶
Günlük Kullanım İçin Faydalı Komutlar¶
# Hizmetin etkin ve çalışıp çalışmadığını hızlıca kontrol et
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
# Hizmeti devre dışı bırak ve durdur
sudo systemctl stop nginx && sudo systemctl disable nginx
Not
--now bayrağı (systemd v220+, 2015'ten beri mevcut) enable + start veya disable + stop işlemlerini eş zamanlı olarak gerçekleştirir.