Linux'ta Hizmet Dosyası Nasıl Oluşturulur

Linux Ta Hizmet Dosyasi Nasil Olusturulur



Systemd init sistemi artık neredeyse tüm Linux dağıtımlarının bir parçası. Yönetici veya geliştirici olarak systemd'nin yönetebileceği hizmetler oluşturursunuz. Örneğin, hizmetleri önyükleme sırasında başlatmak veya bunları manuel olarak kontrol etmek istiyorsanız, bunu özel bir hizmet dosyası aracılığıyla yapabilirsiniz.

Bu derste Linux'ta systemd servis dosyasının nasıl oluşturulacağını anlatacağım.







Hizmet Dosyası Nedir?

Daha ileri gitmeden önce systemd hizmet dosyasının ne olduğunu ve Linux'ta nasıl oluşturulduğunu anlayalım.



Bir systemd hizmet dosyası, systemd'nin hizmeti yönetmesi için belirlenen talimatları içerir. Genellikle üç bölüm içerir:



  • Birim
  • Hizmet
  • Düzenlemek

Birim bölüm, kısa bir açıklama, belge sayfaları ve bağımlılıklara giden yol gibi hizmetle ilgili temel bilgileri içerir. Düzenlemek bölümü isteğe bağlıdır ancak genellikle hizmetin hangi sistem durumunda etkinleştirilmesi gerektiğini yönetir.





Hizmet bölümü normalde Birim ve Kurulum bölümü arasına sıkıştırılmıştır. Öncelikle hizmetin türünü ve esasen hizmetin systemd tarafından çağrılması üzerine çalıştırılacak komutlar olan yürütülebilir dosyaların yolunu içerir.

Tipik bir hizmet dosyası yapısı şöyle görünür.



[ Birim ]

Yönerge1 =talimat

Yönerge2 =talimat



[ Hizmet ]

Yönerge1 =talimat

Yönerge2 =talimat



[ Düzenlemek ]

Yönerge1 =talimat

Yönerge2 =talimat

Burada direktifler, ilgili girdilerini alan parametrelerdir. Örneğin, Tanım yönergesi hizmetin adının bir dizesini alır. Benzer bir şekilde, ExecStart yürütülebilir dosyanın tam yolunu dikkate alır.

Tipik bir servis dosyası ssh.service aşağıda verilmiştir.

Hizmet Dosyası Nasıl Oluşturulur

Bir systemd hizmeti oluşturmak için temel yönergeleri anlamak gerekir. Bu kılavuzda, tamamen işlevsel bir hizmet dosyası oluşturmanıza yardımcı olabilecek temel yönergeleri ele alacağım.

Bir hizmet dosyası oluşturmak birden fazla adım içerir; betik dosyasını oluşturmaya başlayalım.

Not: Aşağıda belirtilen yönteme devam etmek için root ayrıcalıklarına sahip olmanız gerekir.

1. Komut Dosyası Oluşturma

İlk adım, hizmet çalışmaya başladığında yürütülecek kodun oluşturulmasını içerir. Bu eğitim için Linux sisteminin çalışma süresini ve bellek kullanımını saklayacak bir bash betiği oluşturuyorum.

Mevcut dizinde isminde bir script oluşturalım. myscript.sh nano düzenleyiciyi kullanarak.

sudo nano myscript.sh

Şimdi aşağıda verilen scripti dosyaya ekleyin ve tuşuna basarak kaydedin. ctrl+x ve daha sonra Ve .

#!/bin/bash

Eko '>>İşte Sisteminizin Çalışma Süresi<<' > Ev / kendisi / dosyam.txt

çalışma süresi >> Ev / kendisi / dosyam.txt

Eko '>>İşte Sisteminizin Bellek Kullanımı<<' >> / Ev / kendisi / dosyam.txt

özgür -M >> Ev / kendisi / dosyam.txt

uyumak 60

Betik birkaç yankı dizesi içerir ve çalışma süresi Ve özgür komutlar.

çalışma süresi Linux'ta komut, bir sistemin ne kadar süredir çalıştığını ve son 1, 5 ve 15 dakikalık ortalama sistem yüküyle kaç kullanıcının bağlı olduğunu yazdırmak için kullanılır.

özgür komutu sistemin bellek kullanımını yazdırmak için kullanılır. -M flag çıktıyı yazdırmak için kullanılır MB'ler .

Bilgileri bir metin dosyasına kaydetmek için yeniden yönlendirme operatörleri adı verilen özel operatörleri kullanırız. > operatörü belirtilen metin dosyasına metin eklemek için kullanılır. Ancak dosya halihazırda mevcut değilse oluşturulacaktır. iken >> operatörü dosyaya metin eklemek için kullanılır. uyumak komut, hizmetin etkinliğini en az bir dakika süreyle sürdürmek için kullanılır.

Şimdi gerekli izinleri vererek betiği çalıştırılabilir hale getirin.

sudo mod +x myscript.sh

Script artık çalıştırma iznine sahip, bir sonraki bölüme geçelim.

Not: Hizmet dosyasının hatasız olmasını sağlamak için bash betiğinde dosyanın mutlak yolunu kullanın.

2. Bir .service Dosyası Oluşturma

Daha sonra, aşağıdakileri içeren bir hizmet dosyası oluşturun: .hizmet eklenti. Hizmet dosyası şurada oluşturulmalıdır: /etc/systemd/system dizin. Öncelikle bu dizine gidin. CD emretmek.

CD / vesaire / sistemd / sistem

Hizmet dosyasını herhangi bir dizinde oluşturabilir ve daha sonra bu dosyayı bu dizine taşıyabilirsiniz.

İle bir hizmet dosyası oluşturuyorum hizmetim.hizmeti isim.

sudo nano hizmetim.hizmeti

Şimdi aşağıdaki satırları dosyaya ekleyin.

[ Birim ]

Tanım =Hizmetim

[ Hizmet ]

Tip =basit

ExecStart = / çöp Kutusu / darbe / Ev / kendisi / script.sh

Tekrar başlat = arıza durumunda

[ Düzenlemek ]

Aranan: =çok kullanıcılı.hedef

Dikkat [Birim], [Hizmet], Ve [Düzenlemek] öyle harfe duyarlı . [BİRİM] veya [SERVİS] gibi bunlardan herhangi birinin yanlış belirtilmesi durumunda hizmet dosyası çalışmayacaktır.

Hizmet adı şu şekilde belirtildi: Hizmetim içinde Tanım direktifi [Birim] bölüm.

Tip hizmetin basit içinde [Hizmet] varsayılan tür olan bölüm. Çatallama , tek atış , bildirmek , dbus ve boşta kalma diğer türlerden bazılarıdır.

Hizmeti kullanıcıya özel hale getirmek istiyorsanız, o zaman Kullanıcı yönergesi kullanıcının kullanıcı adıyla da kullanılabilir. Bu yönergenin kullanılması, hizmet kullanıcısının iznini bağımlı hale getirecektir.

iken ExecStart direktif yürütülebilir dosyanın tam yolunu içerir. Yukarıdaki örnekte, komut dosyası myscript.sh içinde saklanır /ev/sam/ dizin. Bu direktif aslında bir hizmet systemd tarafından çağrıldığında ne yürütüleceğini yönetir. Komutun tam yolu belirtilmezse, aşağıdaki gibi mutlak yolları düzeltmek için otomatik olarak çözümlenecektir: /usr/yerel/bin , /usr/bin/, Ve /çöp Kutusu . Yürütülebilir dosya adını standart komut dizinlerinde oldukları sürece kullanmakta bir sakınca yoktur, ancak aksi takdirde mutlak yoldan bahsedin. Noktalı virgül (;) ile ayrılmış birden çok komutun da kullanılabileceğini unutmayın.

[Düzenlemek] bölüm isteğe bağlıdır; ancak hizmetin nasıl etkinleştirildiğini gösterir. Aranan: yönergesi çalışma düzeyindeki hedef dosyaları parametre olarak alır. Çeşitli hedef dosyalar sistemin farklı çalışma seviyelerini gösteriyordu; Kapat , kurtarmak , çok kullanıcılı , grafiksel , Ve yeniden başlat .

çok kullanıcılı.hedef sistem çok kullanıcılı, grafiksel olmayan oturumlara izin verecek durumda olduğunda hizmetin etkinleştirileceği anlamına gelir.

3. Hizmeti Etkinleştirme

Hizmeti etkinleştirmek için öncelikle sistemd yapılandırmalarını kullanarak yeniden yükleyin. sistemctl Yarar.

sudo systemctl arka plan programı-yeniden yükleme

Daha sonra hizmeti kullanarak tekrar etkinleştirin. sistemctl ile komut olanak vermek .

sudo sistemctl olanak vermek hizmetim.hizmeti

Doğrulamak için hizmetin durumunu kontrol edin. sistemctl durumu emretmek.

Hizmet başarıyla çalışıyor.

Şimdi metin dosyasını okuyalım dosyam.txt içinde oluşturulan hizmet /Ev dizin.

Normal Kullanıcı İçin Systemd Hizmet Dosyası Nasıl Oluşturulur

Normal bir kullanıcı için hizmet dosyası oluşturma prosedürü, yönetici tarafından hizmet dosyası oluşturma yöntemine benzer. Ancak normal kullanıcılar için hizmet dosyasının kaydedileceği dizin farklıdır. Normal kullanıcılar hizmet dosyalarını ~/.config/systemd/user . Bu dizin kullanılarak oluşturulmalıdır. mkdir emretmek.

mkdir ~ / .config / sistemd / kullanıcı

Hizmeti normal bir kullanıcı tarafından etkinleştirmek için –kullanıcı komut şununla eklenir: sistemctl yerine sudo .

sistemctl --kullanıcı daemon-yeniden yükleme

sistemctl --kullanıcı olanak vermek SERVICE-NAME.service

sistemctl --kullanıcı durum HİZMET-ADI.hizmet

–kullanıcı seçeneği kullanıcının systemd hizmet dosyalarını yönetmek için kullanılır.

Hizmet Dosyası Nasıl Kaldırılır

Servis dosyasını kaldırmak için öncelikle servisin durdurulması gerekmektedir.

sudo systemctl SERVICE-NAME.service'i durdur

kullanarak durumu kontrol edin sistemctl durumu Hizmetin durdurulup durdurulmadığını bilmek için komut. Daha sonra servis dosyasını kullanarak kaldırın. rm emretmek.

sudo rm / vesaire / sistemd / sistem / SERVICE-NAME.service

Şimdi yeniden yükleyin sistemd konfigürasyon.

sudo systemctl arka plan programı-yeniden yükleme

Çözüm

Özel systemd hizmeti çeşitli senaryolarda avantajlıdır. Bu kılavuzda sistem yöneticisi için özel systemd hizmet dosyasının nasıl oluşturulacağını ve normal kullanıcıların nasıl hizmet dosyası oluşturabileceğini öğrendik. Ayrıca servis dosyasını kaldırma prosedürünü de görüyoruz.