Ana içeriğe geç

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

systemctl [options] command [service]

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:

sudo systemctl daemon-reload
sudo systemctl restart nginx

2. Bağımlılıkları Görüntüleme

systemctl list-dependencies nginx

3. Servis Günlüğü (journalctl ile)

journalctl -u nginx

4. Bir Servisi Mask Etme (Tamamen Devre Dışı Bırakma, El ile de)

sudo systemctl mask nginx
sudo systemctl unmask nginx

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.