Systemd servis yönetimi detayları

Cadaloz

Yüzbaşı
Katılım
24 Kasım 2025
Mesajlar
1,229
Reaksiyon puanı
47

Makalenin ana başlığı​


Systemd Servis Yönetimi Detayları​


Systemd'nin Temel İşlevleri​


Systemd, modern Linux dağıtımlarının çoğunda kullanılan bir init sistemidir. Geleneksel init sistemlerine kıyasla daha hızlı başlatma süreleri, paralelleştirme yetenekleri ve bağımlılık yönetimi gibi avantajlar sunar. Systemd'nin temel işlevleri arasında sistem servislerini başlatmak, durdurmak, yeniden başlatmak ve izlemek yer alır. Ayrıca, sistem kaynaklarını yönetir, logları tutar ve sistem olaylarına yanıt verir. Systemd, modüler bir yapıya sahiptir ve birçok farklı bileşenden oluşur. Bu bileşenler, sistemin farklı yönlerini yönetmek için birlikte çalışır. Örneğin, systemd-journald günlükleri yönetirken, systemd-networkd ağ ayarlarını yapılandırır.

Servis Dosyalarının Yapısı​


Systemd servisleri, .service uzantılı dosyalar aracılığıyla tanımlanır. Bu dosyalar, servis hakkında çeşitli bilgileri içerir, örneğin servisin adı, açıklaması, çalıştırılacak komut, bağımlılıkları ve hangi kullanıcı altında çalıştırılacağı. Servis dosyaları genellikle /etc/systemd/system dizininde bulunur, ancak kullanıcı tanımlı servisler için ~/.config/systemd/user dizini de kullanılabilir. Bir servis dosyasının temel bölümleri [Unit], [Service] ve [Install] başlıkları altında toplanır. [Unit] bölümü, servisin açıklaması, bağımlılıkları ve diğer genel ayarlarını içerir. [Service] bölümü, servisin nasıl çalıştırılacağını, yeniden başlatma politikalarını ve diğer servis özelliklerini tanımlar. [Install] bölümü ise, servisin sistem açılışında otomatik olarak başlatılıp başlatılmayacağını belirtir.

Servisleri Yönetmek İçin Kullanılan Komutlar​


Systemd servislerini yönetmek için kullanılan temel komut, systemctl'dir. Bu komut, servisleri başlatmak (start), durdurmak (stop), yeniden başlatmak (restart), yeniden yüklemek (reload) ve durumunu kontrol etmek (status) gibi çeşitli işlemleri gerçekleştirmek için kullanılır. Örneğin, bir servisi başlatmak için "sudo systemctl start servis_adı" komutu kullanılır. Bir servisin durumunu kontrol etmek için ise "sudo systemctl status servis_adı" komutu kullanılır. Systemctl ayrıca, servislerin otomatik olarak başlatılmasını etkinleştirmek (enable) veya devre dışı bırakmak (disable) için de kullanılabilir. Bu komutlar, sistem yöneticilerinin servisleri kolayca yönetmesini sağlar.

Bağımlılıkları Anlamak ve Yönetmek​


Systemd, servisler arasındaki bağımlılıkları etkin bir şekilde yönetir. Bir servis, başka bir servisin çalışmasını gerektirebilir. Bu durumda, bağımlı servis, ana servisten önce başlatılır. Systemd, "Requires", "Wants", "Before" ve "After" gibi direktifler aracılığıyla bağımlılıkları tanımlar. "Requires" direktifi, bir servisin çalışması için mutlaka başka bir servisin çalışır durumda olması gerektiğini belirtir. "Wants" direktifi, bir servisin çalışması için başka bir servisin çalışır durumda olmasını tercih ettiğini, ancak zorunlu olmadığını ifade eder. "Before" ve "After" direktifleri ise, servislerin hangi sırada başlatılacağını veya durdurulacağını belirler. Doğru bağımlılık yönetimi, sistemin kararlı bir şekilde çalışmasını sağlar.

Servisleri Otomatik Başlatma ve Durdurma​


Systemd, servislerin sistem açılışında otomatik olarak başlatılmasını ve sistem kapanışında düzgün bir şekilde durdurulmasını sağlar. Bir servisin otomatik olarak başlatılmasını etkinleştirmek için "sudo systemctl enable servis_adı" komutu kullanılır. Bu komut, servisin ilgili çoklu hedef (multi-user.target gibi) dizininde bir sembolik bağlantı oluşturur. Bir servisin otomatik olarak başlatılmasını devre dışı bırakmak için ise "sudo systemctl disable servis_adı" komutu kullanılır. Systemd, servislerin durdurulması sırasında, servisin çalışmasını sonlandırmak için çeşitli sinyaller gönderir. Bu sinyaller, servisin düzgün bir şekilde kapanmasını ve veri kaybını önlemesini sağlar.

Journald ile Günlük Kayıtlarını İzleme​


Systemd, journald adı verilen bir günlük kayıt sistemi ile entegre olarak çalışır. Journald, sistem olaylarını ve servis günlüklerini toplar ve saklar. Bu günlükler, sistem sorunlarını gidermek ve performansı izlemek için kullanılabilir. Journald günlüklerini görüntülemek için journalctl komutu kullanılır. Journalctl, belirli bir servisin günlüklerini, belirli bir zaman aralığındaki günlükleri veya belirli bir öncelik seviyesindeki günlükleri filtrelemek gibi çeşitli seçenekler sunar. Journald günlükleri, sistem yöneticilerinin sorunları hızlı bir şekilde teşhis etmesine ve çözmesine yardımcı olur.

Systemd'nin Gelişmiş Özellikleri ve İpuçları​


Systemd, temel servis yönetiminin ötesinde birçok gelişmiş özellik sunar. Örneğin, socket activation özelliği, bir servisin yalnızca bir sokete bir bağlantı geldiğinde başlatılmasını sağlar. Bu, sistem kaynaklarını verimli bir şekilde kullanmaya yardımcı olur. Ayrıca, timer units özelliği, servislerin belirli zaman aralıklarında veya belirli takvim olaylarında çalıştırılmasını sağlar. Bu özellik, cron gibi zamanlanmış görevler için kullanılabilir. Systemd ayrıca, cgroups (control groups) aracılığıyla servislerin kaynak kullanımını (CPU, bellek, I/O) sınırlama yeteneği sunar. Bu, sistem kaynaklarının adil bir şekilde paylaşılmasını sağlar. Systemd, modern Linux sistemlerinde servis yönetimini kolaylaştıran ve iyileştiren güçlü bir araçtır.
 
Geri
Üst Alt