Systemd Hizmet Dosyası

Systemd Hizmet Dosyasi



Linux'ta systemctl durum çıktısı, hizmetin, hizmet dosyası adı verilen bir dosya aracılığıyla yüklendiğini gösterir. Bu dosyalara şuradan ulaşılabilir: /lib/systemd/system veya /etc/systemd/system dizinler.

Servis dosyaları var .hizmet uzantıları vardır ve aşağıdakilerin gerektirdiği talimatları içerir: sistemd Bir hizmeti yönetmek için.







sistemd init sistemi, sistemin başlatılmasını aşağıdakileri kullanarak yönetir: Birim . Birim, bir hizmeti yönetmek gibi, onu kontrol etmeyi ve izlemeyi içeren bir görevi veya eylemi gerçekleştiren bir nesnedir. Bu birimler esasen birim bağımlılıklarını ve komutlarını içeren hizmet dosyaları adı verilen dosyalardır. Bu dosyalar, arka plan işlemlerini verimli bir şekilde kontrol etmek ve kaynakları yönetmek için çok önemlidir.



Kılavuzda systemd servis dosyasını, yapısını ve servisi kontrol eden ana direktifleri inceleyeceğim.



Systemd ile çalışırken terimler systemd hizmet dosyası Ve systemd birim dosyası teknik olarak aynı şeyi ifade ettikleri için sıklıkla birbirlerinin yerine kullanılırlar.





Systemd Hizmet Dosyası Nedir?

Linux'ta systemd, systemd'nin anlayabilmesi ve yürütebilmesi için yapılandırma talimatlarını içeren hizmet dosyalarını kullanarak hizmetleri yönetir.

Birimleri listelemek için systemctl komutunu kullanın. –liste birimleri emretmek.



sistemctl --list-birimler

Herhangi bir hizmetin hizmet dosyasını okumak için kedi dosya yolu ile komut.

kedi [ / hizmet dosyası yolu ]

Örneğin, hizmet dosyasını görmek için ssh.service verilen komutu kullanın.

kedi / kitap / sistemd / sistem / ssh.service

Systemd Hizmet Dosyasının Anatomisi

Genellikle systemd hizmet birimi dosyaları üç bölüm içerir.

  • Birim
  • Hizmet
  • Düzenlemek

Hizmete özgü bir birim dosyası, adı verilen belirli bir bölüme sahip olacaktır. Hizmet bölüm.

Hizmetin yalnızca bir birim türü olduğunu unutmayın. Bir birimin soket, cihaz, montaj, otomatik montaj, takas, hedef, zamanlayıcı, dilim ve kapsam gibi farklı türleri olabilir. Bu bölümler Ünite ve Kurulum bölümleri arasına yerleştirilir. Dosya uzantısı da ilgili birim türüyle değiştirilecektir; örneğin, bir yuva birimi türü, .priz Dosya uzantısı.

Not: Bu kılavuzda, yöneticiler ve geliştiriciler tarafından yaygın olarak kullanılması nedeniyle hizmet birimi türüne odaklanacağım.

Bu bölümler köşeli parantezlerin ([]) içine alınmıştır. Her bölüm ilgili bir talimat seti içerir. Aşağıda bir servis dosyasının genel yapısı verilmiştir.

[ Birim ]

Yönerge1 =Talimat 1

Yönerge2 =Talimat 2

[ Hizmet ]

Yönerge1 =Talimat 1

Yönerge2 =Talimat 2

[ Düzenlemek ]

Yönerge1 =Talimat 1

Yönerge2 =Talimat 2

Bölümlerin sırası değiştirilebilir; ancak yukarıda belirtilen sıra genellikle takip edilir.

[Birim] Bölümü

Birim bölümü, birimin ve birim bağımlılıklarının açıklamasını içerir. Bu bölüm geleneksel olarak hizmet dosyasının en üstüne yerleştirilir. Yaygın olarak kullanılan direktifler aşağıda listelenmiştir:

Direktif Tanım
Tanım Bu yönerge hizmetin adını belirtmek için kullanılır. Açıklamanın uzunluğu 80 karakteri geçmemelidir.
Dokümantasyon Bu yönerge hizmetin kılavuz sayfasını veya URL'sini içerir.
Gereklilikler Bu yönerge mevcut hizmete olan bağımlılıktan bahsetmek için kullanılır. Bu bağımlılık hizmetinin aktivasyonu gerçekleştirilmediği takdirde mevcut hizmet başlatılmayacaktır.
İstiyor Bu yönerge mevcut hizmete olan bağımlılıktan bahsetmek için kullanılır. Ancak mevcut hizmetin çalıştırılması için bu bağımlılık hizmetinin etkinleştirilmesi gerekmez.
Önce Mevcut ünite aktif hale getirildikten sonra bu yönergede belirtilen hizmet başlatılacaktır.
Sonrasında Mevcut ünite etkinleştirilmeden önce bu yönergede belirtilen hizmet başlatılacaktır.
Bağlanır Bu yönerge mevcut hizmeti söz konusu hizmete bağlar. Bağlantılı hizmet yeniden başlatılırsa mevcut hizmetler de yeniden başlatılır.

Bu direktiflerin dışında iki direktif daha var; Durum Ve İddia. Pek çok hizmetin başarıyla çalışması için belirli sistem koşulları gerekir ve bu yönergeler koşullardan bahsetmek için kullanılır.

[Yükle] Bölümü

Bu bölüm zorunlu değildir ve yalnızca bir hizmetin önyükleme sırasında etkinleştirilmesini veya devre dışı bırakılmasını gerektirdiğinde gereklidir. Üstelik takma ad servisinden de bahsetmek gerekiyor. Kurulum bölümü için yaygın olarak kullanılan yönergeler aşağıda listelenmiştir:

Direktif Tanım
Aranan: Bu direktif çalışma seviyesini ayarlar * hizmetin hedefi. Bir hedef belirlenmişse çok kullanıcılı.hedef daha sonra hizmet bu çalışma düzeyinde etkinleştirilecektir.
GerekliTarafından Bu yönerge WantedBy ile benzerlik göstermektedir ancak yönergede belirtilen bağımlılık olmasa bile hizmet etkinleştirilecektir.
Takma ad Bu yönerge, hizmeti başka bir adla etkinleştirmek için kullanılır. Hizmet etkinleştirildiğinde bu adla bir sembolik bağlantı oluşturulur.

Çoğunlukla, çok kullanıcılı.hedef Olarak kullanılır Aranan: parametre. Peki multi-user.target nedir?

multi-user.target, grafiksel olmayan çok kullanıcılı oturumları kabul etmeye hazır sistem durumunu temsil eder. GUI'yi başlatmadan önceki durumdur.

Sistemin farklı çalışma seviyeleri mevcut, gelin bu çalışma seviyelerinin işlevini öğrenelim.

Systemd'de hizmetler, çalışma seviyelerine göre gruplandırılır. hedefler . Her çalışma seviyesinin bir dosyası vardır. .hedef uzantısındaki /etc/systemd/system dizin. Çalıştırma düzeyinin durumuna göre bir hizmet çalışacaktır.

Çalıştırma Seviyesi Hedefler Durum Dosyalar
0 Kapat Kapat ve kapat güç kapalı.hedef
1 kurtarmak Kurtarma kabuğunu başlatır kurtarma.hedefi
2,3,4 çok kullanıcılı Çok kullanıcılı GUI olmayan kabuğu başlatır çok kullanıcılı.hedef
5 grafiksel Çok kullanıcılı GUI kabuğu oluşturur grafiksel.hedef
6 yeniden başlat Kapat ve yeniden başlat yeniden başlatma.hedef

[Hizmet] Bölümü

Bu bölüm hizmete ilişkin yapılandırma ayarlarını içerir. Bu bölümün birincil yapılandırması, hizmetin başlangıcında yürütülecek tür ve komutların tanımlanmasıdır. Tip Ve ExecStart bir hizmet kurmak için kullanılan ana yönergelerdir.

Aşağıdaki tabloda farklı hizmet türleri listelenmiştir.

servis tipi Tanım
basit Tür veya Busname belirtilmediğinde ve yalnızca ExecStart belirtildiğinde varsayılan türdür. Sistemd önce ana işlemi, ardından takip birimlerini yürütür.
çatallamak Bu tür, ana hizmet kapalı olsa bile hizmetin çalışır durumda kalmasını sağlamak için kullanılır. Ana sürecin kapanmasından sonra bir alt süreci çatallar.
tek atış Sistemd ilk olarak ana prosesi yürütür ve ana prosesten çıkıldığında takip birimleri başlayacaktır.
dbus Dbus'lu servis, veri yolu üzerindeki başka bir işlemle iletişim kurmak için kullanılır. Bus adı belirtildiyse bus adı alındıktan sonra işlem aktif hale gelecektir.
bildirmek Hizmet, işlemi başlatırken bildirimde bulunacaktır. Bildirim yapıldıktan sonra sistemd takip birimlerine geçecektir.
Boşta Tüm aktif işler gönderilene kadar hizmeti tutar; öncelikle konsol çıktısını iyileştirmek için faydalıdır.

Hizmet bölümünde yaygın olarak kullanılan yönergeler aşağıda belirtilmiştir:

Direktif Tanım
ExecStart İşlemi başlatmak için yürütülecek komutun tam yolunu tutar.
ExecStartPre Ana işlem başlamadan önce yürütülmesi gereken komutları tutar.
ExecStartPost Ana işlem başladıktan sonra yürütülmesi gereken komutları tutar.
ExecYeniden Yükle Hizmet yapılandırmasını yeniden yükleme komutunu tutar.
Tekrar başlat Arıza, başarı, anormal durum, iptal ve izleme gibi durumlarda hizmeti otomatik olarak yeniden başlatmak için.
Yeniden Başlatma Saniyesi Hizmetin otomatik olarak yeniden başlatılacağı saniye sayısını korumak için.

ExecStart Servis bölümünde kullanılan önemli direktiflerden biridir. Şunu içerir: yürütülebilir dosyanın tam yolu hizmetin çağrıldığında yürütüleceğini.

Çözüm

Systemd hizmet dosyası, systemd tarafından yönetilebilmeleri için yönergeler ve komutlarla yapılandırılmış bir yapılandırma dosyasıdır. Bu dosyalar bir hizmetin systemd tarafından nasıl yönetildiğini gösteren talimatlar içerir. Bu kılavuzda, bir systemd hizmet dosyasına nasıl erişileceğini, bölümlerini ve hizmetleri yöneten yönergeleri anlattım. Servis dosyası talimatları hakkında daha fazla bilgi edinmek için lütfen burada bulunan resmi dokümantasyon kılavuzunu okuyun. Burada .