Sıfırdan Systemd Servisi Oluşturma Ve Kullanabilme

Linux ve Unix tabanli isletim sistemlerini hep beraber tanıyıp öğreneceğiz.
Cevapla
Kullanıcı avatarı
TRWE_2012
Exabyte3
Exabyte3
Mesajlar: 13911
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 1814 kez
Teşekkür edildi: 4182 kez

Sıfırdan Systemd Servisi Oluşturma Ve Kullanabilme

Mesaj gönderen TRWE_2012 »

Aşağıda GNU/Linux Mint 21.1 x64 İşletim Sistemi Dağıtımında, sıfırdan bir "boot-time" servisi oluşturma adımları verilmiştir.

1. Önyükleme Sürelerini Kaydetme

Önyükleme sürelerini kaydetmek için

Kod: Tümünü seç

systemd-analyze time
komutunu bir dosyaya yönlendireceğiz. Bu işlemi bir betik ile yapabiliriz.

Adım 1.1

Betiği Oluşturma 
  • Terminalde bir metin düzenleyici açın (örneğin, veya
  • Aşağıdaki komutla yeni bir dosya oluşturun:

Kod: Tümünü seç

nano log_boot_time.sh
Adım 1.2

Aşağıdaki Betiği Yapıştırın
:

Kod: Tümünü seç

#!/bin/bash
# Önyükleme süresini kaydetme betiği

# Tarih ve saat bilgisini al
echo "Önyükleme Süresi - $(date)" >> /var/log/boot_time.log
# Önyükleme süresini al ve dosyaya ekle
systemd-analyze time >> /var/log/boot_time.log
echo "------------------------" >> /var/log/boot_time.log
Adım 1.3

Dosyayı Kaydedin ve Çıkın
: kullanıyorsanız,

Kod: Tümünü seç

CTRL + O
ile kaydedin ve

Kod: Tümünü seç

CTRL + X
ile çıkın.

2. Özel Betikler

Şimdi, bu beti her sistem açıldığında otomatik olarak çalışacak şekilde ayarlayalım.

Adım 2.1

Systemd Servisi Oluşturma

1.Yeni bir systemd servis dosyası oluşturun:

Kod: Tümünü seç

sudo nano /etc/systemd/system/log_boot_time.service
2.Aşağıdaki içeriği yapıştırın:

Kod: Tümünü seç

[Unit]
Description=Log Boot Time

[Service]
Type=oneshot
ExecStart=/path/to/your/log_boot_time.sh

[Install]
WantedBy=multi-user.target
Not:

Kod: Tümünü seç

/path/to/your/log_boot_time.sh
kısmını, betiğin gerçek yolu ile değiştirin. Örneğin, eğer betiği

Kod: Tümünü seç

/home/kullanıcı_hesap_adı/Masaüstü/log_boot_time.sh
olarak kaydettiyseniz, bu kısmı

Kod: Tümünü seç

/home/kullanıcı_hesap_adı/Masaüstü/log_boot_time.sh
olarak güncelleyin.

Adım 2.2

Servisi Etkinleştirme İşlemleri

1.Servisi etkinleştirin
:

Kod: Tümünü seç

sudo systemctl enable log_boot_time.service
2.Servisi başlatın (şu anda çalıştırmak için) :

Kod: Tümünü seç

sudo systemctl start log_boot_time.service
Artık sisteminiz her açıldığında, önyükleme süresi

Kod: Tümünü seç

/var/log/boot_time.log
dosyasına kaydedilecektir. Bu dosyayı inceleyerek geçmiş önyükleme sürelerini görebilirsiniz:

Kod: Tümünü seç

cat /var/log/boot_time.log
Yukarıda oluşturduğumuz betik ve systemd servisi ile

Kod: Tümünü seç

/var/log/boot_time.log
dosyasına kaydedilecek log çıktısı, her sistem açılışında aşağıdaki gibi bir formatta olacaktır:

Kod: Tümünü seç

Önyükleme Süresi - Fri Oct 20 12:34:56 UTC 2023
Startup finished in 6.753s (firmware) + 8.094s (loader) + 8.609s (kernel) + 2min 22.330s (userspace) = 2min 45.787s
graphical.target reached after 2min 22.319s in userspace
------------------------
Açıklama:
  • Önyükleme Süresi - [Tarih ve Saat]: Bu satır, önyükleme süresinin kaydedildiği tarih ve saati gösterir. Örneğin, "Fri Oct 20 12:34:56 UTC 2023" gibi bir formatta olacaktır.
  • Startup finished in ...: Bu satır,

    Kod: Tümünü seç

    systemd-analyze time
    komutunun çıktısını içerir ve önyükleme süresinin farklı aşamalarını gösterir.
  • graphical.target reached ...: Bu satır, grafik arayüzünün ne zaman başlatıldığını gösterir.
  • ------------------------: Bu satır, her kaydın sonunda bir ayırıcı olarak kullanılır, böylece log dosyasında her önyükleme kaydı arasında net bir ayrım yapılır.
Log Dosyasını İnceleme

Log dosyasını incelemek için şu komutu kullanabilirsiniz:

Kod: Tümünü seç

cat /var/log/boot_time.log
Eğer dosya çok uzun ise ve sadece son birkaç kaydı görmek isterseniz, komutunu kullanabilirsiniz: 

Kod: Tümünü seç

tail -n 10 /var/log/boot_time.log
Bu komut, log dosyasının son 10 satırını gösterir.
 
En son TRWE_2012 tarafından 16 Şub 2025, 16:29 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
TRWE_2012
Exabyte3
Exabyte3
Mesajlar: 13911
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 1814 kez
Teşekkür edildi: 4182 kez

Re: Sıfırdan Systemd Oluşturma Ve Kullanabilme

Mesaj gönderen TRWE_2012 »

log_boot_time.service hizmetinin şu anda çalışıp çalışmadığını kontrol etmek için aşağıdaki komutu terminalde çalıştırabiliriz.

Kod: Tümünü seç

sudo systemctl status log_boot_time.service
Bu komut, log_boot_time.service hizmetinin durumunu gösterir. Çıktıda aşağıdaki bilgileri göreceksiniz:

    Active: Hizmetin aktif olup olmadığını gösterir. "active (running)" ifadesi, hizmetin çalıştığını belirtir.
    Loaded: Hizmetin yüklenip yüklenmediğini gösterir.
    Main PID: Hizmetin ana işlem kimliğini (PID) gösterir.
    Logs: Hizmetle ilgili son log kayıtlarını görebilirsiniz.

Eğer hizmet çalışıyorsa, "active (running)" ifadesini göreceksiniz. Eğer çalışmıyorsa, "inactive" veya "failed" gibi ifadelerle karşılaşabilirsiniz.

Oluşturulan servisin çalışıp çalışmadığını şu komutla anlayabiliriz....

Kod: Tümünü seç

$ sudo systemctl status log_boot_time.service
○ log_boot_time.service - Log Boot Time
     Loaded: loaded (/etc/systemd/system/log_boot_time.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Sun 2025-02-16 02:33:54 +03; 2min 20s ago
    Process: 138883 ExecStart=/log_boot_time.sh (code=exited, status=0/SUCCESS)
   Main PID: 138883 (code=exited, status=0/SUCCESS)
        CPU: 10ms
Komut Çıktısının Genel Açıklaması :

Gördüğünüz çıktı, log_boot_time.service hizmetinin şu anda çalışmadığını (inactive) gösteriyor. Çıktıyı adım adım inceleyelim:

   Loaded: Hizmetin yüklü olduğunu ve otomatik olarak başlatılacak şekilde ayarlandığını gösteriyor.
    Active: "inactive (dead)" ifadesi, hizmetin şu anda çalışmadığını belirtir. Ayrıca, en son ne zaman çalıştığını ve ne kadar süre önce devre dışı kaldığını gösteriyor (2 dakika 20 saniye önce).
    Process: Hizmetin en son çalıştığında kullandığı işlem kimliği (PID) ve çıkış durumu (status) burada belirtilmiş. "code=exited, status=0/SUCCESS" ifadesi, hizmetin başarılı bir şekilde tamamlandığını gösterir.
    CPU: Hizmetin çalıştığı süre boyunca kullandığı CPU zamanını gösterir (10ms).

log_boot_time.service hizmeti, sistem her başlatıldığında otomatik olarak çalışacak şekilde ayarlanmış. Ancak, hizmetin kendisi çalıştıktan sonra hemen duruyor. Bu, hizmetin bir kez çalışıp belirli bir işlemi (örneğin, sistem açılış zamanını kaydetmek gibi) tamamladıktan sonra devre dışı kalması anlamına gelir.

Bu tür hizmetler genellikle belirli bir görevi yerine getirmek için tasarlanmıştır ve bu görev tamamlandığında durmaları beklenir. Yani, sistem her açıldığında hizmet başlatılacak, gerekli işlemi yapacak ve ardından duracaktır. Bu, hizmetin tasarımına bağlıdır ve genellikle beklenen bir davranıştır.

Kod: Tümünü seç

$ cat /var/log/boot_time.log
Önyükleme Süresi - Paz 16 Şub 2025 02:33:54 +03
Startup finished in 6.753s (firmware) + 8.094s (loader) + 8.609s (kernel) + 2min 22.330s (userspace) = 2min 45.787s
graphical.target reached after 2min 22.319s in userspace
Gördüğünüz çıktı, /var/log/boot_time.log dosyasının içeriğini gösteriyor ve sistemin açılış süresi hakkında bilgi veriyor.

Çıktıyı adım adım inceleyelim:

    Önyükleme Süresi: "Önyükleme Süresi - Paz 16 Şub 2025 02:33:54 +03" ifadesi, sistemin açılış zamanını ve tarihini belirtmekte... Bu, log_boot_time.service hizmetinin çalıştığı zaman dilimidir.

    Startup finished in: Bu bölüm, sistemin açılış süresini detaylandırır:
        firmware: 6.753 saniye
        loader: 8.094 saniye
        kernel: 8.609 saniye
        userspace: 2 dakika 22.330 saniye

    Toplamda, sistemin açılış süresi 2 dakika 45.787 saniye olarak hesaplanmıştır.

    graphical.target reached: Bu ifade, sistemin grafik arayüzüne (grafiksel hedef) ulaşma süresini belirtir. Burada, grafiksel hedefin 2 dakika 22.319 saniye içinde kullanıcı alanında (userspace) ulaşıldığı belirtiliyor.

Bu log dosyası, sistem açılış süresi hakkında detaylı bilgi sağlamakta ve log_boot_time.service hizmetinin amacını yerine getirdiğini göstermektedir. Yani, hizmet açıldığında bu bilgileri kaydetmiş ve log dosyasına yazmıştır.
 
Kullanıcı avatarı
TRWE_2012
Exabyte3
Exabyte3
Mesajlar: 13911
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 1814 kez
Teşekkür edildi: 4182 kez

Re: Sıfırdan Systemd Servisi Oluşturma Ve Kullanabilme

Mesaj gönderen TRWE_2012 »

Kullanıcı avatarı
burak35
Zettabyte1
Zettabyte1
Mesajlar: 15543
Kayıt: 07 Eki 2016, 13:06
cinsiyet: Erkek
Teşekkür etti: 9010 kez
Teşekkür edildi: 10141 kez

Re: Sıfırdan Systemd Servisi Oluşturma Ve Kullanabilme

Mesaj gönderen burak35 »

Maşallah ne kadar kısa bir işlemmiş...
Cevapla

“Linux ve Unix tabanli isletim sistemleri” sayfasına dön