GNU/Linux İşletim Sistemlerinde Sıfırdan Servis Oluşturma

Cevapla
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 887
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 238 kez
Teşekkür edildi: 733 kez
İletişim:

GNU/Linux İşletim Sistemlerinde Sıfırdan Servis Oluşturma

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
TimeoutSec=75

[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ı İncelemeLog 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.
 
 
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim

Etiketler:
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 887
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 238 kez
Teşekkür edildi: 733 kez
İletişim:

Re: GNU/Linux İşletim Sistemlerinde Sıfırdan Servis Oluşturma

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.
 
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 887
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 238 kez
Teşekkür edildi: 733 kez
İletişim:

Re: GNU/Linux İşletim Sistemlerinde Sıfırdan Servis Oluşturma

Mesaj gönderen TRWE_2012 »

Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 887
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 238 kez
Teşekkür edildi: 733 kez
İletişim:

Re: GNU/Linux İşletim Sistemlerinde Sıfırdan Servis Oluşturma

Mesaj gönderen TRWE_2012 »

İki Günlük Sonuçlar :

Kod: Tümünü seç

root@notebookpc://# 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
------------------------
Önyükleme Süresi - Sal 18 Şub 2025 15:58:44 +03
Startup finished in 6.964s (firmware) + 16.181s (loader) + 9.080s (kernel) + 2min 27.422s (userspace) = 2min 59.649s 
graphical.target reached after 2min 27.411s in userspace
------------------------
Önyükleme Süresi - Sal 18 Şub 2025 15:59:21 +03
Startup finished in 6.964s (firmware) + 16.181s (loader) + 9.080s (kernel) + 2min 27.422s (userspace) = 2min 59.649s 
graphical.target reached after 2min 27.411s in userspace
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 887
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 238 kez
Teşekkür edildi: 733 kez
İletişim:

Re: GNU/Linux İşletim Sistemlerinde Sıfırdan Servis Oluşturma

Mesaj gönderen TRWE_2012 »

Değişim Günlüğü (Changelog) - Versiyon 1.1 - 2025-02-23
  • Özellik Ekleme: Kullanıcı oturumu açıldıktan 30 saniye bekleyen bir script oluşturuldu.
  • Loglama: Script, önyükleme süresini kaydetmek için

    Kod: Tümünü seç

    /var/log/boot_time.log
    dosyasına tarih ve saat bilgisi ekler.
  • Önyükleme Süresi Bilgisi:

    Kod: Tümünü seç

    systemd-analyze time
    komutu kullanılarak önyükleme süreleri (firmware, loader, kernel, userspace) log dosyasına yazılır.
  • Ayırıcı Çizgi: Her kayıt sonrasında log dosyasına bir ayırıcı çizgi eklendi.
Detaylar:

Script İçeriği
:

Kod: Tümünü seç

#!/bin/bash

# Önyükleme süresini kaydetme betiği

# Kullanıcı oturumu açıldıktan 30 saniye bekle
sleep 30

# 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
Servis Dosyası:

Kod: Tümünü seç

[Unit]
Description=Log Boot Time
After=graphical.target

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

[Install]
WantedBy=graphical.target
Kullanım
  • Servis Aktifleştirme: Servis, sistem önyüklemesi sırasında otomatik olarak çalışacak şekilde etkinleştirildi.
  • Log Dosyası:

    Kod: Tümünü seç

    /var/log/boot_time.log
    dosyasında her önyükleme için tarih, saat ve önyükleme süreleri kaydedilmektedir.
İzahat :

Kullanıcı oturumu açıldıktan 30 saniye sonra script çalışacak, log dosyasına gerekli veriyi yazacak ve ardından duracaktır. Yani, 30 saniye boyunca bekleyecek, sonra loglama yapacak ve işlemi tamamlayacak...

Kod: Tümünü seç

sleep 30
komutunu kullanıldığında, sayım büyükten küçüğe doğru gerçekleşir. Yani, script çalışmaya başladığında 30 saniye bekleyecek ve bu süre boyunca hiçbir işlem yapmadan hazır ol vaziyetinde olacak;
  • 30. saniye: Script çalışmaya başlar ve 30 saniye bekler.
  • 29. saniye: Bekleme devam eder.
  • 28. saniye: Bekleme devam eder.
  • ...
  • 1. saniye: Bekleme devam eder.
  • 0. saniye: Bekleme süresi sona erer ve loglama işlemi yapılır.
Yani, bekleme süresi boyunca sayım büyükten küçüğe doğru (30, 29, 28, ..., 1, 0) gerçekleşir. 0. saniyede loglama işlemi yapılır ve script tamamlanır.

Siz bekleme süresini daha da aşağıya çekebilirsiniz.Bu durum tamamen sizin paşa gönlünüze kalmış kişisel bir tercih meselesidir.

Servisi Yeniden Etkinleştirme Adımları :

A.Daemon'ı Yeniden Yükleyin


Yapılan değişikliklerin etkili olabilmesi için systemd daemon'ını yeniden yükleyin:
 

Kod: Tümünü seç

sudo systemctl daemon-reload
B.Servisi Yeniden Başlatın

Servisi yeniden etkinleştirin ve başlatın...


B1.Etkinleştirme :

Kod: Tümünü seç

sudo systemctl enable log_boot_time.service
B2.Yeniden Başlatma :

Kod: Tümünü seç

sudo systemctl start log_boot_time.service
C.Durumu Kontrol Edin

Servisin durumunu kontrol ederek doğru bir şekilde çalışıp çalışmadığını görebilirsiniz:

Kod: Tümünü seç

systemctl status log_boot_time.service
 
 
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim
Cevapla

“GNU/Linux Genel” sayfasına dön