- 27 Kasım 2025
- 670
- 9
Init.d Nedir ve Neden Önemlidir?
Init.d, Linux sistemlerinde servislerin başlangıç ve kapanış süreçlerini yöneten geleneksel bir sistemdir. "System V init" olarak da bilinen bu yapı, bilgisayarın açılışında hangi programların (servislerin) hangi sırayla çalışacağını belirler. Birçok kritik servis, örneğin bir web sunucusu, veritabanı veya ağ hizmeti, init.d tarafından kontrol edilir. Bu sistem, sistemin düzgün ve kararlı bir şekilde başlamasını, servislerin birbirine bağımlılıklarını gözeterek doğru zamanda devreye girmesini sağlar. Başka bir deyişle, init.d olmadan Linux sistemleri karmaşık servisleri verimli bir biçimde yönetemezdi. Bu yapıyı anlamak, eski nesil sistem yöneticiliği için temel bir beceridir.
Bash Scriptlerin Init.d Sistemindeki Rolü
Init.d sisteminin kalbinde Bash scriptleri yer alır. Her bir servis için, sistemin başlatma, durdurma, yeniden başlatma veya durumunu sorgulama gibi eylemlerini gerçekleştiren özel bir Bash scripti bulunur. Bu scriptler, ilgili servisi nasıl yöneteceğine dair tüm mantığı içerir. Örneğin, bir web sunucusu için hazırlanan Bash scripti, sunucunun çalıştırılabilir dosyasını belirli parametrelerle başlatır, gerekirse bir PID dosyası oluşturur ve durdurma komutu geldiğinde bu PID dosyasını kullanarak süreci sonlandırır. Bu sayede, Bash'in esnekliği ve gücü, sistem yöneticilerine servis yönetiminde büyük bir kontrol imkanı sunar.
Basit Bir Init.d Scripti Oluşturmak
Kendi init.d scriptinizi oluşturmak, Linux servis yönetimini derinlemesine anlamanın iyi bir yoludur. Öncelikle, scriptin ilk satırına `#!/bin/bash` ekleyerek Bash yorumlayıcısını belirtmeliyiz. Daha sonra, scriptin temel işlevlerini tanımlayan bir `case` yapısı kullanırız: `start`, `stop`, `restart` ve `status`. Örneğin, basit bir "merhaba dünya" servisi oluşturalım. Bu servis, her başlatıldığında belirli bir dosyaya "Servis başladı!" yazabilir. `start` bloğunda bu yazma işlemini gerçekleştirecek komutu ekleriz, `stop` bloğunda ise bu servisi sonlandıracak (eğer bir arka plan süreci ise) veya mesajı silme gibi bir temizlik yapacak komutları tanımlarız.
Init.d Script Yapısı ve Temel Fonksiyonlar
Tipik bir init.d scripti, belirli bir yapıya ve standart fonksiyonlara sahiptir. Başlangıçta, LSB (Linux Standard Base) uyumluluğu için gerekli olan yorum satırları bulunur. Bu kısım, servisin adını, açıklaması, bağımlılıkları ve varsayılan çalışma seviyelerini belirtir. Script içinde genellikle `NAME`, `DAEMON`, `PIDFILE` gibi değişkenler tanımlanır. Ana işlevler ise `start()`, `stop()`, `restart()` ve `status()` adında Bash fonksiyonları olarak implemente edilir. Örneğin, `start()` fonksiyonu, `DAEMON` değişkeninde tanımlı olan programı arka planda çalıştırır ve PID dosyasını yazar. `stop()` fonksiyonu ise PID dosyasından süreci okur ve `kill` komutuyla sonlandırır.
Servisleri Başlatma, Durdurma ve Yeniden Başlatma
Oluşturduğumuz init.d scriptleri ile etkileşime geçmek oldukça basittir. Genellikle `/etc/init.d/` dizinine yerleştirilen scriptleri doğrudan çalıştırabilir veya `service` komutunu kullanabiliriz. Örneğin, `sudo /etc/init.d/benimservisim start` veya `sudo service benimservisim start` komutları ile servisimizi başlatırız. `stop`, `restart` ve `status` parametreleri de benzer şekilde kullanılır. Bu komutlar, Bash scriptimizin içindeki `case` yapısını tetikler ve ilgili fonksiyonu çalıştırır. Servisleri durdurmak, bakım çalışmaları veya yapılandırma değişiklikleri gerektiğinde hayati öneme sahiptir; bu nedenle, bu komutların işleyişini bilmek sistem yöneticisi için temel bir yetkinliktir.
Sistem Başlangıcında Servisleri Otomatik Çalıştırmak
Bir init.d scriptini oluşturduktan sonra, onu sistem açılışında otomatik olarak çalışacak şekilde ayarlamak gerekir. Bu işlem, farklı Linux dağıtımlarında küçük farklılıklar gösterse de mantık aynıdır. Debian/Ubuntu tabanlı sistemlerde `update-rc.d` komutunu kullanırız. Örneğin, `sudo update-rc.d benimservisim defaults` komutu, scriptimizi varsayılan çalışma seviyelerine ekler. Red Hat/CentOS gibi sistemlerde ise `chkconfig` kullanılır. Bu komutlar, `/etc/rcX.d/` dizinlerinde sembolik bağlantılar oluşturarak sistemin farklı çalışma seviyelerinde servisin ne zaman başlatılacağını veya durdurulacağını belirler. Bu sayede, sistem her başladığında servislerimiz de otomatik olarak devreye girer.
Modern Sistemlerde Init.d ve Alternatifleri
Init.d sistemi, Linux'ta uzun yıllar boyunca standart olarak kullanılmış olsa da, modern Linux dağıtımları genellikle daha yeni ve gelişmiş sistem yönetimi çözümlerine yönelmiştir. `Systemd`, bu alternatifler arasında en yaygın olanıdır. Systemd, paralel servis başlatma, gelişmiş bağımlılık yönetimi, kaynak kontrolü ve daha birçok özellik sunarak init.d'ye kıyasla önemli avantajlar sağlar. Bununla birlikte, init.d bilgisi hala değerlidir. Birçok eski sistem veya özel uygulama hala init.d scriptleri kullanır. Ek olarak, systemd bile çoğu zaman init.d scriptlerini uyumluluk katmanı aracılığıyla çalıştırabilir. Dolayısıyla, init.d yönetimi temel bir Linux sistem yöneticiliği bilgisi olarak önemini korumaktadır.
