Systemctl Komutlarıyla Günlük Servis İşlemleri

Linux tabanlı sistemlerde servislerin başlatılması ve kontrol edilmesi, uzun yıllar boyunca init, SysVinit ve Upstart gibi çözümlerle sağlanıyordu. Günümüzde ise bu görevleri daha güçlü ve bütüncül bir yapı olan systemd üstlenir. systemd, sistem kaynaklarını daha verimli kullanarak hızlı başlangıç sağlar ve arka plandaki süreçleri düzenler. Bilgisayar açıldığında devreye girer; servisleri, socket yapılarını, mount noktalarını ve swap alanlarını sırayla başlatır ve yönetir. Yönetim araçları arasında systemctl, journalctl, loginctl, cgls, cgtop ve nspawn öne çıkar. Bu araçlar sayesinde systemd, servislerin bağımlılıklarına göre doğru sırayla çalışmasını sağlar ve sistemin stabil kalmasına yardımcı olur. Ayrıca systemd ile entegre çalışan günlük yönetim süreçlerinde, Linux dosya sistemi üzerinde işlem yapılırken dikkatli olunmalı; örneğin kritik log veya konfigürasyon dosyaları Linux rm komutu ile yanlışlıkla silinmemelidir.

Arkaplan Süreçleri (Daemon) Nedir?

Linux sistemlerinin bel kemiğini oluşturan daemon’lar, sistem açılır açılmaz devreye girer ve kullanıcıdan bağımsız olarak arkaplanda çalışır. Örneğin, sshd servisi uzak erişimi yönetir ve sistem açık olduğu sürece kesintisiz çalışır. Bu tür servislerin adları çoğunlukla “d” harfiyle sona erer.

Tanımlar:

  • Daemon: Kullanıcısız çalışan servis süreçleri
  • Socket: Ağa ya da sistem içi bağlantılara açık uç noktalar
  • Service: Daemon’ların sunduğu işlevlerin bütünüdür

Eski sistemlerde çekirdek yüklendikten sonra init başlatılır ve /etc/inittab dosyasını okuyarak sistemin hangi seviyeden (runlevel) başlayacağı belirlenir:

  • 6: Yeniden başlatma
  • 0: Kapanma
  • 1: Tek kullanıcı / kurtarma
  • 2-3: Metin modunda çok kullanıcı
  • 5: Grafik arayüzlü oturum

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