Konuyu Açan
#0
Makalenin ana başlığı
Systemd Servis Yönetimi Yöntemleri
Systemd, modern Linux sistemlerinde servisleri başlatmak, durdurmak, yeniden başlatmak ve yönetmek için kullanılan güçlü bir sistem ve servis yöneticisidir. Geleneksel init sistemlerinin yerini alarak, paralelleştirme ve bağımlılık yönetimi gibi gelişmiş özellikler sunar. Bu sayede sistem başlatma sürelerini önemli ölçüde kısaltır ve servis yönetimini daha verimli hale getirir. Systemd, sadece servisleri değil, aynı zamanda sistem günlüklerini, kullanıcı oturumlarını ve hatta cihazları yönetebilir. Bu da onu Linux sistemlerinin temel bir bileşeni yapar.
Systemd ile Servisleri Başlatma ve Durdurma
Systemd ile servisleri başlatmak için `systemctl start servis_adı` komutu kullanılır. Bu komut, servisi hemen başlatır ve arka planda çalışmasını sağlar. Servisi durdurmak için ise `systemctl stop servis_adı` komutu kullanılır. Bu komut, servisi nazikçe durdurur ve tüm kaynaklarını serbest bırakır. Eğer servis yanıt vermiyorsa, `systemctl kill servis_adı` komutu ile servisi zorla durdurabilirsiniz. Ancak bu, veri kaybına veya tutarsızlığa neden olabileceğinden, son çare olarak kullanılmalıdır.
Servis Durumunu Kontrol Etme
Bir servisin durumunu kontrol etmek için `systemctl status servis_adı` komutu kullanılır. Bu komut, servisin çalışıp çalışmadığını, ne kadar süredir çalıştığını, hangi PID ile çalıştığını ve en son günlük mesajlarını gösterir. Servisin durumunu izlemek, sorun giderme ve performans analizi için çok önemlidir. Ayrıca, `systemctl is-active servis_adı` komutu ile servisin aktif olup olmadığını hızlıca kontrol edebilirsiniz. Bu komut, sadece `active` veya `inactive` şeklinde bir çıktı verir.
Servisleri Yeniden Başlatma ve Reload Etme
Bazen bir servisi yeniden başlatmak veya yeniden yüklemek gerekebilir. Yeniden başlatma, servisi durdurup tekrar başlatmak anlamına gelirken, yeniden yükleme (reload), servisi durdurmadan yapılandırma dosyalarını yeniden okumasını sağlar. Systemd ile bir servisi yeniden başlatmak için `systemctl restart servis_adı` komutu kullanılır. Servisi yeniden yüklemek için ise `systemctl reload servis_adı` komutu kullanılır. Yeniden yükleme, genellikle yapılandırma değişikliklerini uygulamak için daha hızlı ve kesintisiz bir yöntemdir.
Servislerin Otomatik Başlatılmasını Yönetme
Systemd, sistem başladığında servislerin otomatik olarak başlatılmasını yönetme yeteneği sunar. Bir servisin otomatik olarak başlatılmasını etkinleştirmek için `systemctl enable servis_adı` komutu kullanılır. Bu komut, servisin sistem başlangıcında otomatik olarak başlaması için gerekli sembolik bağlantıları oluşturur. Bir servisin otomatik başlatılmasını devre dışı bırakmak için ise `systemctl disable servis_adı` komutu kullanılır. Bu komut, sembolik bağlantıları siler ve servisin sistem başlangıcında otomatik olarak başlamasını engeller.
Servis Bağımlılıklarını Yönetme
Systemd, servisler arasındaki bağımlılıkları yönetmek için gelişmiş mekanizmalar sunar. Bir servis, başka bir servise bağımlı olabilir ve bu bağımlılık, servisin başlatılmasını veya durdurulmasını etkileyebilir. Systemd servis dosyalarında `Requires`, `Wants`, `Before`, `After` gibi direktifler kullanılarak bağımlılıklar tanımlanabilir. Örneğin, bir web sunucusu veritabanı sunucusuna bağımlıysa, web sunucusunun başlatılmadan önce veritabanı sunucusunun başlatılması sağlanabilir.
Systemd Servis Dosyaları ve Yapılandırma
Systemd servisleri, `.service` uzantılı dosyalarda tanımlanır. Bu dosyalar, servisin nasıl başlatılacağını, durdurulacağını, yeniden başlatılacağını ve hangi bağımlılıklara sahip olduğunu belirtir. Servis dosyaları genellikle `/etc/systemd/system/` dizininde bulunur. Bir servis dosyasının temel bölümleri şunlardır: `[Unit]`, `[Service]` ve `[Install]`. `[Unit]` bölümü, servisin açıklaması, bağımlılıkları ve diğer meta verilerini içerir. `[Service]` bölümü, servisin nasıl çalıştırılacağını, hangi kullanıcı ile çalışacağını ve hangi parametrelerin kullanılacağını belirtir. `[Install]` bölümü, servisin nasıl etkinleştirileceğini ve hangi hedeflere (targets) dahil edileceğini tanımlar.