Linux’ta Systemd ile Servisler Nasıl Kontrol Edilir?

Eskiden Linux servisleri init, SysV veya Upstart gibi yöntemlerle kontrol edilirken, zamanla bunların yerini modern ve daha verimli bir sistem olan systemd almıştır. systemd, yalnızca servisleri değil; socket’leri, mount noktalarını, swap alanlarını ve hedefleri de yöneten kapsamlı bir yapı sunar. Sistemin açılışında devreye girerek servisleri sıralı biçimde çalıştırır, kaynakları yönetir ve arkaplan işlemlerini kontrol altında tutar. systemctl, journalctl, cgtop ve nspawn gibi araçlarla sistem yöneticilerine detaylı kontrol imkânı tanır. Ayrıca, CPU kullanımı gibi kaynaklar Prometheus ve Grafana ile entegre edilerek izlenebilir ve performans analizleri yapılabilir. systemd’nin bağımlılıklara dayalı işlem sıralaması sayesinde sistem daha istikrarlı çalışır.

Arka Planda Çalışan Servis Süreçleri

Linux sistemlerinde, kullanıcı etkileşimi olmadan çalışan ve sistemin açılmasıyla birlikte otomatik olarak başlatılan arka plan servislerine “daemon” adı verilir. Örneğin, SSH bağlantılarını yöneten sshd servisi, sistem çalıştığı sürece aktif kalır. Genellikle bu servislerin adları “d” harfi ile biter ve sistemde sessiz şekilde görev yaparlar.

Bir daemon, sistem hizmetlerini arka planda sürdüren bir süreci temsil eder. Bunun yanında, “socket” terimi; ağ ya da yerel bağlantıları dinleyen uç noktaları ifade eder. “Service” ise bir ya da birden fazla daemon tarafından sağlanan bütünsel hizmeti belirtir.

Geleneksel Linux sistemlerinde çekirdek yüklendikten sonra init süreci PID 1 olarak devreye girer ve /etc/inittab dosyasını okuyarak sistemin hangi çalıştırma düzeyinden (runlevel) başlayacağını belirler. Runlevel yapısı, sistemin hangi bileşenlerle çalışacağını tanımlar:

  • 0: Halt – Sistemin kapanması
  • 1: Single – Tek kullanıcı kurtarma modu
  • 2–3: Multiuser – Ağsız ya da ağ destekli çok kullanıcılı mod
  • 5: X11 – Grafik arayüzlü çalışma modu
  • 6: Reboot – Sistemin yeniden başlatılması

systemd Unit Dosyaları ve Türleri

Systemd yapısı, “unit” olarak adlandırılan dosyalar aracılığıyla yapılandırılır. Her unit dosyası bir servis, mount noktası, hedef, zamanlayıcı ya da benzeri bir öğeyi tanımlar. Bu dosyalar genellikle /etc/systemd/system/ ya da /lib/systemd/system/ dizinlerinde yer alır.

En yaygın unit türleri şunlardır:

.service → Servisleri tanımlar

.socket → Socket’ler için yapılandırma içerir

.target → Birden çok servisin gruplandığı hedeflerdir

.mount → Disk bölümlerinin bağlanmasını tanımlar

.swap → Takas alanlarını yönetir

systemctl Komutları

Servisleri Başlatma ve Durdurma

Bir servisi başlatmak için start komutu kullanılır. Komut, sistemde değişiklik yapacağından sudo ile çalıştırılmalıdır.

sudo systemctl start application.service

Çalışmakta olan bir servisi durdurmak için stop komutu kullanılır:

sudo systemctl stop application.service

Servisi yeniden başlatmak için restart komutu verilir:

sudo systemctl restart application.service

systemctl Tüm Hizmetleri Listeleme

Sistemde şu anda çalışan ve yüklenmiş servisleri görmek için aşağıdaki komut kullanılabilir:

systemctl list-units

systemctl ile Etkin Olmayan Hizmetleri Listeleme

Eğer sadece çalışmayan (durdurulmuş) servisleri görmek istiyorsanız, aşağıdaki komutu kullanabilirsiniz:

sudo systemctl list-units --type=service --state=inactive

systemctl ile Etkinleştirilmiş Hizmetleri Listeleme

Sistemde önyükleme sırasında otomatik olarak başlayan servisleri görmek için:

sudo systemctl list-unit-files --type=service --state=enabled

Klasik service ve chkconfig Komutlarına Alternatifler

systemctl list-units --type=service --state=active

Evet, systemctl komutları .service uzantısını otomatik olarak varsayar. Ancak netlik ve uyumluluk açısından uzantıyı yazmanız önerilir.

systemctl get-default
sudo systemctl enable servis_adi

Eski sistemler sıralı çalışırken, systemd servisleri paralel başlatabilir, bağımlılık yönetimi yapabilir ve servis durumlarını daha etkili şekilde izleyebilir. Ayrıca journalctl ile birleşik bir günlükleme sistemi sunar.

Ubuntu, Debian, Fedora, CentOS, RHEL, SUSE, Arch Linux gibi birçok modern Linux dağıtımı artık varsayılan olarak systemd ile gelir.

Bir servis yapılandırma hatası, bağımlı servis eksikliği veya kaynak erişim problemi nedeniyle failed olabilir. Durumu görmek için:

systemctl status servis_adi

Yorum yapın