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.service2. Adım: Servis tanımını yazın
1[Unit]2Description=Benim Bot Uygulamam3After=network.target45[Service]6Type=simple7User=botuser8WorkingDirectory=/opt/mybot9ExecStart=/usr/bin/python3 /opt/mybot/bot.py10Restart=always11RestartSec=101213[Install]14WantedBy=multi-user.targetBurada:
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-reload4. Adım: Servisi başlat ve etkinleştir
1sudo systemctl start mybot2sudo systemctl enable mybot5. Adım: Durumunu kontrol et
1sudo systemctl status mybotÇıktı örneği:
1● mybot.service - Benim Bot Uygulamam2Loaded: loaded (/etc/systemd/system/mybot.service; enabled; preset: enabled)3Active: active (running) since Mon 2024-01-15 10:30:45 UTC; 2min ago4Main PID: 1234 (python3)5Tasks: 1 (limit: 512)6Memory: 25.3M7CPU: 1.2s8CGroup: /system.slice/mybot.service9└─1234 /usr/bin/python3 /opt/mybot/bot.pyServisi 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.
0 yorum