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 .