Birimler ve Birim Tipleri
systemd
, yönettiği tüm kaynakları ve eylemleri birim (unit) adı verilen nesneler aracılığıyla tanımlar. Her birim, belirli bir türdeki bir kaynağı veya görevi temsil eder ve bir yapılandırma dosyası (unit file) ile tanımlanır. Bu dosyalar, sistemin nasıl başlatılacağını, servislerin nasıl çalışacağını, cihazların nasıl yönetileceğini ve diğer birçok sistem davranışını belirler.
Birim Dosyalarının Konumları
Birim dosyaları genellikle aşağıdaki dizinlerde bulunur ve belirli bir öncelik sırasına göre okunur:
/etc/systemd/system/: Sistem yöneticisi tarafından oluşturulan veya düzenlenen birim dosyaları. Buradaki dosyalar, diğer dizinlerdeki aynı isimli dosyaları geçersiz kılar (override eder) veya tamamlar. Özel servisler veya varsayılan davranışları değiştirmek için kullanılır.
/run/systemd/system/: Çalışma zamanında (runtime) oluşturulan birim dosyaları.
/etc/
'deki dosyalara göre önceliklidir./usr/lib/systemd/system/: Kurulan paketler tarafından sağlanan varsayılan birim dosyaları (vendor-supplied). Bu dosyalar doğrudan düzenlenmemelidir; değişiklik yapmak için dosya
/etc/systemd/system/
altına kopyalanmalı veyasystemctl edit <unit>
komutu kullanılmalıdır.
systemd
, bir unit'i yüklerken bu dizinleri belirtilen sırayla kontrol eder ve bulduğu ilk eşleşmeyi kullanır.
Yaygın Birim Tipleri
Birim dosyalarının adları, temsil ettikleri kaynağın türünü belirten bir uzantı ile biter. En yaygın birim tipleri şunlardır:
.service
: Sistem servislerini (daemon'ları) tanımlar. En sık kullanılan birim tipidir. Bir servisin nasıl başlatılacağını, durdurulacağını, hangi kullanıcıyla çalışacağını, bağımlılıklarını ve diğer davranışlarını belirler. (Örn:sshd.service
,nginx.service
).socket
: Bir ağ soketini, IPC soketini veya FIFO'yu temsil eder. Genellikle soket aktivasyonu için kullanılır; yani ilgili sokete bir bağlantı geldiğinde, systemd ilişkili.service
birimini otomatik olarak başlatır. Bu, servisin sürekli çalışmasına gerek kalmadan kaynak tasarrufu sağlar. (Örn:sshd.socket
).target
: Diğer unit'leri gruplayan bir senkronizasyon noktasıdır. Belirli bir sistem durumunu veya hedefini temsil eder. SysVinit'teki runlevel'lara benzer bir işlev görür, ancak daha esnektir ve bağımlılıklara dayanır. (Örn:multi-user.target
,graphical.target
,network.target
,sysinit.target
).mount
: Bir dosya sistemi bağlama noktasını (/etc/fstab
'daki bir satıra benzer şekilde) tanımlar ve yönetir. systemd,/etc/fstab
girdilerini de otomatik olarak.mount
birimlerine dönüştürebilir. (Örn:home.mount
).automount
: Bir dosya sistemi bağlama noktası için otomatik bağlama (automount) işlevselliği sağlar. İlgili dizine erişildiğinde, systemd ilişkili.mount
birimini otomatik olarak etkinleştirir. Ağ paylaşımları veya isteğe bağlı bağlanan aygıtlar için kullanışlıdır. (Örn:media-usb.automount
).timer
: Belirli zamanlarda veya periyodik olarak başka bir unit'i (genellikle bir.service
unit'ini) etkinleştirmek için kullanılır.cron
işlerine modern bir alternatiftir. (Örn:backup.timer
).path
: Belirli bir dosya veya dizindeki değişiklikleri izler ve bir değişiklik olduğunda (örn. dosya oluşturma, değiştirme) başka bir unit'i etkinleştirir. (Örn:logwatch.path
).slice
: Kaynak yönetimi için kullanılan bir gruplama mekanizmasıdır. Linux Kontrol Grupları (cgroups) ile ilişkilidir ve bir grup unit'in toplam kaynak kullanımını (CPU, bellek, I/O vb.) sınırlamak veya yönetmek için kullanılır. (Örn:user.slice
,system.slice
).scope
:slice
'a benzer, ancak systemd tarafından başlatılmayan, dışarıdan oluşturulan süreçleri (örn. kullanıcı oturumları,sshd
tarafından başlatılan süreçler) gruplamak için kullanılır. Kaynak yönetimi ve izleme amacıyla kullanılır..device
: Çekirdek tarafından algılanan veudev
tarafından systemd'ye bildirilen donanım aygıtlarını temsil eder. Genellikle otomatik olarak oluşturulur ve bağımlılıklar için kullanılır.
Birimleri systemctl
ile Yönetme
systemctl
ile Yönetmesystemctl
komutu sadece servisleri değil, tüm unit tiplerini yönetmek için kullanılır.
Unit'leri Listeleme:
Unit Dosyalarını Listeleme: Sistemdeki tüm unit dosyalarını ve durumlarını (enabled, disabled, static, masked) listeler.
Unit Dosyasının İçeriğini Görme:
Unit'in Detaylı Özelliklerini Görme:
Bağımlılıkları Görme:
Unit dosyaları ve tipleri, systemd'nin esnekliğinin ve gücünün temelini oluşturur. Bir servisin veya sistem davranışının nasıl çalıştığını anlamak için ilgili unit dosyalarını incelemek önemlidir.
Last updated