systemd Servislerini Yazma: Arka Plan Uygulamalarını Kontrol Etmek

Linux'ta arka planda çalışan uygulamaları (web sunucusu, veritabanı, bot vb.) düzenli şekilde yönetmek için systemd kullanırız. systemd, modern Linux sistemlerinin init sistemi; servis dosyası yazarak uygulamayı sistem başlangıcında otomatik başlatabilir, hata durumunda yeniden başlatabilir ve durmasını kontrol edebilirsiniz.

Sistem başladığında otomatik başlaması gereken bir uygulamanız varsa, bunu systemd'ye söylemek gerekir. systemd, /etc/systemd/system/ klasöründe .service dosyaları arar ve burada tanımlanan kuralları uygular. Dosya, uygulamanın nerede olduğunu, nasıl başlayacağını, hangi kullanıcı ile çalışacağını belirtir.

1. Adım: Servis dosyasını oluştur

Örneğin, Python ile yazılmış bir bot uygulamanız /opt/mybot/bot.py konumunda olsun. Servis dosyasını oluşturun:

1sudo nano /etc/systemd/system/mybot.service

2. Adım: Servis tanımını yazın

1[Unit]
2Description=Benim Bot Uygulamam
3After=network.target
4
5[Service]
6Type=simple
7User=botuser
8WorkingDirectory=/opt/mybot
9ExecStart=/usr/bin/python3 /opt/mybot/bot.py
10Restart=always
11RestartSec=10
12
13[Install]
14WantedBy=multi-user.target

Burada:

  • Description: Uygulamanın açıklaması.
  • After=network.target: Ağ hazır olduktan sonra başla.
  • Type=simple: Basit bir uygulama (ön planda çalışan).
  • User=botuser: Hangi kullanıcı ile çalışacak.
  • ExecStart: Başlatılacak komut (tam yol).
  • Restart=always: Kapanırsa yeniden başlat.
  • RestartSec=10: Yeniden başlatmadan önce 10 saniye bekle.
  • WantedBy=multi-user.target: Sistem başlangıcında başlat.

3. Adım: Dosyayı kaydet ve systemd'yi yenile

1sudo systemctl daemon-reload

4. Adım: Servisi başlat ve etkinleştir

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1sudo systemctl start mybot
2sudo systemctl enable mybot

5. Adım: Durumunu kontrol et

1sudo systemctl status mybot

Çıktı örneği:

1● mybot.service - Benim Bot Uygulamam
2Loaded: loaded (/etc/systemd/system/mybot.service; enabled; preset: enabled)
3Active: active (running) since Mon 2024-01-15 10:30:45 UTC; 2min ago
4Main PID: 1234 (python3)
5Tasks: 1 (limit: 512)
6Memory: 25.3M
7CPU: 1.2s
8CGroup: /system.slice/mybot.service
9└─1234 /usr/bin/python3 /opt/mybot/bot.py

Servisi durdurmak: sudo systemctl stop mybot

Servisi yeniden başlatmak: sudo systemctl restart mybot

Sistem başlangıcında başlamasını devre dışı bırakmak: sudo systemctl disable mybot

Loglara bakmak: sudo journalctl -u mybot -f

Servis dosyasında hata varsa systemctl status ve journalctl size hangi satırda sorun olduğunu gösterir. Dosyayı düzenledikten sonra her zaman daemon-reload çalıştırmayı unutmayın.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz