İçeriğe geç

systemd Nedir? Linux Sistemlerde Servis Yönetimi

Kategori: Linux Sistemleri

Linux dünyasında servislerin kontrolü ve sistem başlangıç süreçlerinin yönetimi, init, SysV ve Upstart gibi araçlarla sağlanıyordu. Ancak geliştirilen systemd, bu eski yapıların yerini almak üzere ortaya çıkmıştır. systemd, Linux sistemlerinde servislerin, socket’lerin ve diğer kaynakların yönetimini daha hızlı bir başlangıç süreci sunan kapsamlı bir sistem ve servis yöneticisidir.

systemd’nin asıl amacı, bilgisayardaki sistem ve servislerin çalışmasını organize etmektir. Bilgisayar açıldığında devreye girer ve servisleri sırayla başlatır. Kaynak kullanımını ve arka planda çalışan işlemleri yönetir. Oturumlar, mount noktaları, swap alanları ve hedefler gibi birçok yapıyı kontrol eder. Bu işlemleri Linux bash kabuğu üzerinden çalıştırılan komutlarla da yönetebilirsiniz. systemctl, journalctl, loginctl, cgls, cgtop, nspawn gibi araçlar sayesinde servislerin doğru sırayla ve bağımlılıklarına göre çalışması sağlanır.

Arkaplan Süreçleri (Daemon) Nedir?

Daemon’lar, sistem açıldığında başlatılan ve kullanıcı etkileşimi olmaksızın arka planda çalışan servislerdir. Örneğin sshd servisi, uzak bağlantılar için SSH erişimini sağlar ve sistem çalıştığı sürece aktif kalır. Bu tür servislerin isimleri genellikle d harfiyle biter ve arka planda sessizce işlem yürütürler.

  • Daemon: Arkaplanda çalışan servis süreçleri.
  • Socket: Ağ ya da yerel bağlantıları dinleyen iletişim uç noktalarıdır.
  • Service: Genellikle bir veya birden fazla daemon tarafından sağlanan hizmetleri ifade eder.

Eski sistemlerde çekirdek yüklendikten sonra init süreci çalıştırılırdı. Bu süreç PID 1 olarak başlar ve /etc/inittab dosyasını okuyarak sistemin hangi Runlevel’dan başlayacağını belirlerdi.

  • 0: Halt: Sistemi kapatma
  • 1: Single: Tek kullanıcı kurtarma modu
  • 2–3: Multiuser: Çok kullanıcılı mod (NFS olmadan veya ağ destekli)
  • 5: X11: Grafik arayüzlü mod (X11)
  • 6: reboot: Yeniden başlatma

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

İlk Yorumu Siz Yapın

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir