Ana içeriğe geç

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

systemctl [seçenekler] komut [hizmet]

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:

sudo systemctl daemon-reload
sudo systemctl restart nginx

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

systemctl list-dependencies nginx

3. Hizmet Günlüğü (journalctl aracılığıyla)

journalctl -u nginx

4. Bir Hizmeti Maskelama (Tamamen Devre Dışı Bırakma, Manuel Olarak Bile)

sudo systemctl mask nginx
sudo systemctl unmask nginx

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.