Linux Sistemleri

      Systemd Nedir ve Linux’ta Nasıl Çalışır?

      Linux sistemlerinde servislerin ve başlangıç işlemlerinin kontrolü geçmişte init, SysV ve Upstart gibi araçlarla gerçekleştirilirdi. Ancak zamanla bu yapıların yerini, daha modern ve kapsamlı bir sistem yöneticisi olan systemd almıştır. systemd, sistem başlangıcını hızlandırmasının yanı sıra servis, socket ve diğer kaynakların yönetiminden sorumludur. Bilgisayar açıldığında aktif hâle gelir ve hizmetleri belirlenen sırayla başlatır. Aynı zamanda oturumları, bağlama noktalarını (mount), swap alanlarını ve hedefleri organize eder. Bu yapı, özellikle Linux sanal sunucu ortamlarında kaynakların verimli kullanılmasını ve Linux CPU yükünün dengeli dağıtılmasını sağlamak açısından kritik bir rol oynar. systemctl, journalctl, loginctl, cgls, cgtop ve nspawn gibi araçlar aracılığıyla bu süreçler kontrol altına alınabilir. Böylece systemd, servislerin bağımlılıklarını göz önünde bulundurarak doğru şekilde çalışmasını sağlar.

      Linux’ta Arkaplan Süreçleri (Daemon)

      Linux sistemlerinde daemon adı verilen arkaplan süreçleri, sistem açıldığında otomatik olarak başlatılır ve kullanıcı müdahalesi olmaksızın çalışmaya devam eder. Örneğin sshd servisi, uzak bağlantılar için SSH erişimini sağlar ve sistem açık kaldığı sürece aktif kalır. Bu süreçlerin isimleri genellikle “d” harfi ile biter ve arka planda sessizce işlem yürütür.

      • Daemon: Sistem açılışında devreye giren ve kullanıcı etkileşimi gerektirmeden çalışan servislerdir.
      • Socket: Ağ veya yerel bağlantıları dinleyen iletişim noktalarıdır.
      • Service: Genellikle birden fazla daemon’un sunduğu hizmetin genel adıdır.

      Eski init tabanlı sistemlerde, çekirdek yüklendikten sonra PID 1 olarak init süreci başlar ve /etc/inittab dosyasını okuyarak sistemin hangi runlevel ile başlayacağını belirlerdi:

      • 0: Sistemi durdur
      • 1: Tek kullanıcı kurtarma modu
      • 2–3: Ağsız ya da ağlı çok kullanıcı modu
      • 5: Grafik arayüzlü başlatma (X11)
      • 6: Sistemi yeniden başlat

      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

      Hi, I’m Spesifik

      Bir yanıt yazın

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