Linux Tabanlı Sistemlerde Systemd Kullanarak Servis Dosyası Oluşturmak
Rues Community olarak birçok node testnetine katıldık. Katılmaya da devam ediyoruz, ağırlıklı ubuntu 20.04 lts veya 22.04 lts sürümlerini kullanıyoruz. Bu testnetlerde birçoğunuz farkında olmasa da işimizi kolaylaştıran Servis Dosyası'nı yani bir linux systemd ana process'ini kullanıyoruz. Böylece systemctl ve service komutlarıyla kendi servisinizi kontrol edebilir, başlangıçta otomatik çalışan programlar hazırlayabilir ve dilediğinizde programınızı açıp kapatabilirsiniz.
Servis dosyası nedir?
Servis dosyası, Linux tabanlı işletim sistemlerinde sistem hizmetlerini yönetmek için kullanılan yapılandırma dosyasıdır. Bu dosyalar, sistem servislerini, uygulamaları veya arka plan işlemlerini başlatmak, durdurmak, yeniden başlatmak ve yönetmek için kullanılır. Servis dosyaları genellikle systemd adı verilen bir hizmet yöneticisi tarafından kullanılır.
Systemd, modern Linux dağıtımlarında yaygın olarak kullanılan bir sistem ve oturum yönetimi aracıdır. Servis dosyaları, systemd'nin hizmet komutlarını kullanarak servisleri başlatma, durdurma, yeniden başlatma, durumunu kontrol etme ve hizmetlerin sistem başlangıcında otomatik olarak başlatılmasını sağlama gibi birçok işlemi gerçekleştirmesine olanak sağlar. Servis dosyaları, genellikle /etc/systemd/system dizini içinde saklanır. Bu dosyalarda, servislerin başlangıç komutları, hedefler, başlatma parametreleri, hizmetlerin bağımlılıkları, yeniden başlatma politikaları ve daha fazlası gibi servisle ilgili yapılandırma ayarları bulunur.
Servis dosyalarını kullanarak, sistem yöneticileri farklı servislerin davranışını özelleştirebilir, yönetebilir ve planlayabilir. Özellikle sunucu ortamlarında, bu dosyalar, hizmetlerin düzgün şekilde çalışmasını sağlamak için önemli bir rol oynar. Özetlemek gerekirse, servis dosyaları, Linux sistemlerindeki sistem hizmetlerini yönetmek ve kontrol etmek için kullanılan yapılandırma dosyalarıdır. systemd gibi hizmet yöneticileri tarafından kullanılarak, hizmetlerin başlatılması, durdurulması, yeniden başlatılması ve planlanması sağlanır.
Servis dosyaları ne işe yarar?
Servis dosyaları, Linux tabanlı işletim sistemlerinde sistem hizmetlerini yönetmek ve kontrol etmek için kullanılan yapılandırma dosyalarıdır. İşte servis dosyalarının sağladığı başlıca kullanımlar:
1. Servislerin başlatılması, durdurulması ve yeniden başlatılması: Servis dosyaları, sistemdeki bir hizmetin başlatılması, durdurulması ve yeniden başlatılması gibi temel işlemleri gerçekleştirir. Sistem yöneticileri, bir servisin durumunu kontrol etmek ve hizmeti başlatmak, durdurmak veya yeniden başlatmak için servis dosyalarını kullanabilir.
2. Başlangıçta otomatik olarak servislerin başlatılması: Servis dosyaları, sistem başlangıcında belirli servislerin otomatik olarak başlatılmasını sağlar. Bu, kullanıcıların her seferinde el ile servisleri başlatma ihtiyacından kurtarılarak sistemlerin daha etkin çalışmasını sağlar. Özellikle sunucu ortamlarında işgücünü azaltır ve sürekli çalışması gereken hizmetlerin istenilen şekilde başlamasını garanti eder.
3. Hizmetlerin yönetimi: Servis dosyaları, hizmetlerin çalışma parametrelerini ve yönetimsel ayarlarını belirleyebilir. Bu, sistem yöneticilerinin bir hizmetin maksimum işlemci ve bellek kullanımını sınırlaması, loglama seçeneklerini yapılandırması veya benzeri yönetimsel işlemleri gerçekleştirmesi için olanak sağlar.
4. Hizmet bağımlılıklarının yönetimi: Servis dosyaları, bir hizmetin başlatılması veya durdurulması için gereken diğer bağımlı hizmetleri belirleyebilir. Bu, hizmetler arasında doğru bir sıra ve düzen sağlanmasını sağlar, böylece hizmetler birbirleriyle uyumlu ve bağımlılıklara göre çalışabilir.
5. Hata durumlarında otomatik yeniden başlatma: Servis dosyaları, hizmetlerin hatalı durumda otomatik olarak yeniden başlatılmasını sağlayabilir. Bu, hata durumlarında hizmetlerin otomatik olarak kurtarılmasını ve sistemde sürekliliğin sağlanmasını sağlar.
Servis dosyaları, sistem yöneticilerine, hizmetlerin yönetimini özelleştirmek ve karmaşık işlemleri otomatikleştirmek için önemli bir araç sağlar. Linux tabanlı işletim sistemlerinde, genellikle systemd adı verilen hizmet yöneticisi tarafından kullanılır. Bu sayede servislerin başlatılması, durdurulması, yönetilmesi ve sistem başlangıcında otomatik olarak başlatılması gibi önemli işlemler gerçekleştirilebilir.
Bir örnekle servis dosyası oluşturup anlatmak istiyorum. Bir çoğunuzun testnetine katıldığı dymension validator node projesinden yola çıkalım bu projede kullandığımız binary dosyası "dymd" dir. Bunu .NODEISMI olarak bir önceki Otomatik Port Değiştirme Scripti makalemde anlattığım için burada çok üstünde durmayacağım. ( örneğin .nibi olan bir projede bin dosyası nibid olur) Kullandığınız delege, stake , send , init komutları bu dosya adı ile başlar.
sudo tee /etc/systemd/system/dymd.service > /dev/null << EOF [Unit] Description=Dymension node service After=network-online.target [Service] User=$USER ExecStart=$(which dymd) start Restart=on-failure RestartSec=10 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
Aşağıdaki komudu VPS'inizde aratırsanız binary yolunu görürsünüz.
which dymd
Dymension adlı bir düğüm servisini yönetmek için bir servis dosyası (dymd.service) oluşturduk. İşlevleri şu şekilde açıklayabiliriz:
- Unit: Servisin birimi, genellikle açıklama ve ne zaman başlaması gerektiği gibi bilgiler içerir. Bu örnekte, açıklama "Dymension node service" olarak ayarlanmıştır ve servisin network-online.target üzerinde başlaması gerektiği belirtilmiştir.
- Service: Servis çalıştırıldığında yapılması gerekenler ve yönetim ayarlarını içerir. Örnekte, servis, $USER kullanıcısıyla başlatılacak ve dymd komutu start parametresiyle çalıştırılacaktır. Ayrıca, servis hatalı olduğunda otomatik olarak yeniden başlatılacak ve her yeniden başlatma arasında 10 saniye bekleyecektir. LimitNOFILE ayarıyla da servise aynı anda açılacak dosya sayısının sınırı belirlenmiştir.
- Install: Servisin yükleneceği hedefi belirtir. Bu örnekte, multi-user.target hedefine yüklenmesi belirtilmiştir.
Bu örnek servis dosyası, belirtilen Dymension düğüm servisini kullanarak sistem başlangıcında otomatik olarak başlatmayı ve hatalı durumlarda otomatik yeniden başlatmayı hedeflemektedir. Lütfen unutmayın, $USER ifadesi kullanıcının mevcut oturumu ile değiştirilmelidir, aksi takdirde hatalarla karşılaşabilirsiniz. Eğer hata alıyorsanız root olarak düzenlemeniz ve servisi yeniden yüklemenizi öneriyorum. Aşağıdaki komutla açıp değişiklikleri yapıp kaydedin kapatın.
nano /etc/systemd/system/dymd.service
Şimdilik servis dosyasını oluşturduk ama henüz yükleyip başlatmadık hadi onlara geçelim.
Oluşturduğumuz sevis dosyasını yüklemek:
sudo systemctl daemon-reload
Oluşturduğumuz sevis dosyasını aktif etmek:
sudo systemctl enable dymd.service
Oluşturduğumuz sevis dosyasını başlatmak:
sudo systemctl start dymd.service
Oluşturduğumuz sevis dosyası durumunu incelemek:
sudo systemctl status dymd
Bu kısımda exit code hatası gördüğünüzde node'unuzda sorun var demektir. Tekrar gözden geçirmenizde fayda olacaktır. Active yazdığı sürece sorun yok.
Oluşturduğumuz sevis dosyası log izlemek:
sudo journalctl -u dymd -f --no-hostname -o cat
Oluşturduğumuz sevis dosyasını durdurmak:
sudo systemctl stop dymd.service
Oluşturduğumuz sevis dosyasını deaktif etmek:
sudo systemctl disable dymd.service
Her bilgiyi bu makaleye yazmayayım sonraki makalelerde bir python veya bash scriptle yazılmış bir script için servis dosyası oluşturarak yönetimini kolaylaştırırız, bu şekilde bir makale yazmayı düşünüyorum.
Başarılar dilerim!