Eggdrop

Eggdrop autobotchk ve crontab: Botu Çöktüğünde Otomatik Başlatmak

· Güncelleme: · 5 dk okuma

Eggdrop autobotchk ve crontab: Botu Çöktüğünde Otomatik Başlatmak
İçindekiler
  1. Nasıl Çalışır?
  2. 1. autobotchk ile Otomatik Kurulum
  3. 2. Crontab Kaydını Kontrol Etmek
  4. 3. Manuel Test
  5. Sunucu Yeniden Başladığında
  6. Bayat pid Dosyası Sorunu
  7. Alternatif: systemd Servisi
  8. Sürekli Çöken Bir Bot
  9. Gerçek Bir Senaryo
  10. Bildirimler
  11. Sonuç

Bir Eggdrop botu aylarca kesintisiz çalışabilir, ama er ya da geç bir şey olur: Sunucu bakım için yeniden başlatılır, bir script hatası botu çökertir, bellek yetersizliği nedeniyle işletim sistemi süreci sonlandırır. Bot kapandığında kanallar korumasız kalır ve siz fark edene kadar saatler geçebilir. Eggdrop autobotchk aracı ve crontab, botun kapandığını kısa sürede fark edip onu kendiliğinden yeniden başlatmanın klasik yoludur.

Nasıl Çalışır?

Mantık basittir: Birkaç dakikada bir çalışan küçük bir kontrol scripti, botun çalışıp çalışmadığına bakar. Bot çalışıyorsa hiçbir şey yapmaz; çalışmıyorsa botu başlatır. Botun çalışıp çalışmadığını anlamak için Eggdrop'un oluşturduğu pid dosyası kullanılır. Bu dosya, çalışan bot sürecinin kimlik numarasını içerir. Kontrol scripti bu numaraya sahip bir sürecin hâlâ var olup olmadığını denetler.

Bu kontrolü düzenli aralıklarla çalıştırmak için Unix sistemlerinin zamanlanmış görev aracı cron kullanılır. Her kullanıcının kendi crontab'ı vardır ve bot hangi kullanıcıyla çalışıyorsa kontrol de o kullanıcının crontab'ına eklenmelidir.

1. autobotchk ile Otomatik Kurulum

Eggdrop, bu işi kolaylaştıran autobotchk adlı bir yardımcı scriptle gelir. Botun kurulu olduğu klasörde scripts dizininin içinde bulunur. Kullanımı:

cd ~/eggdrop
./scripts/autobotchk eggdrop.conf

Script, yapılandırma dosyanızı okuyarak botun adını, pid dosyasının yerini ve çalıştırılacak komutu belirler. Ardından bir kontrol scripti oluşturur ve onu crontab'a ekler. Varsayılan olarak kontrol her on dakikada bir yapılır. Komutun alabildiği seçenekler arasında kontrol aralığını değiştirmek, e-posta bildirimlerini kapatmak veya crontab'a otomatik eklemeyi atlamak gibi ayarlar bulunur. Seçeneklerin tam listesini scripti parametresiz çalıştırarak görebilirsiniz.

Kurulumun bir parçası olarak bu adımı Eggdrop kurulumu ve ilk çalıştırma yazılarımızda da kısaca anmıştık.

2. Crontab Kaydını Kontrol Etmek

crontab -l

Çıktıda şuna benzer bir satır görmelisiniz:

*/10 * * * * /home/kullanici/eggdrop/eggdrop.botchk >/dev/null 2>&1

Bu satır, kontrol scriptinin her on dakikada bir çalışacağını söyler. Satırın sonundaki yönlendirme, scriptin ürettiği çıktıların e-posta olarak gönderilmesini engeller. Crontab'ın beş zaman alanı; dakika, saat, ayın günü, ay ve haftanın günüdür. */10 "her on dakikada bir" anlamına gelir.

3. Manuel Test

Kurulumun çalıştığından emin olmak için kontrol scriptini elle çalıştırın:

./eggdrop.botchk

Bot zaten çalışıyorsa script hiçbir şey yapmadan çıkmalıdır. Ardından botu partyline'dan .die komutuyla kapatın ve scripti tekrar çalıştırın; bu kez botu başlatmalıdır. Bu test, cron'un dakikalarca beklemesine gerek kalmadan sistemin doğru çalıştığını doğrular.

Sunucu Yeniden Başladığında

Sunucu yeniden başlatıldığında cron da yeniden başlar ve bir sonraki kontrolde botu açar. Bu, botun sunucu açıldıktan en geç on dakika sonra çalışır hâle geleceği anlamına gelir. Daha hızlı başlatma istiyorsanız crontab'a @reboot satırı eklenebilir:

@reboot /home/kullanici/eggdrop/eggdrop.botchk >/dev/null 2>&1

Bu satır sistem açılışında bir kez çalışır. Bazı paylaşımlı sunucularda @reboot desteklenmeyebilir; bu durumda düzenli kontrol yeterli olur.

Bayat pid Dosyası Sorunu

Bot düzgün kapanmazsa pid dosyası diskte kalabilir. Sunucu yeniden başladıktan sonra aynı süreç numarası tesadüfen başka bir sürece verilmişse kontrol scripti botun çalıştığını sanabilir. Modern botchk scriptleri süreç numarasının yanında sürecin adını da kontrol ederek bu sorunu büyük ölçüde önler. Yine de bot uzun süre açılmıyorsa ilk bakılacak yer pid dosyasıdır; eski dosyayı silip kontrol scriptini yeniden çalıştırmak genellikle sorunu çözer.

Alternatif: systemd Servisi

Sunucuda yönetici yetkiniz varsa systemd, crontab'a göre daha düzenli bir çözüm sunar. Botu bir systemd servisi olarak tanımladığınızda sistem açılışta botu başlatır, çöktüğünde hemen yeniden başlatır ve günlükleri merkezi olarak tutar. Eggdrop'un ön planda çalışmasını sağlayan başlatma parametresiyle birlikte basit bir servis dosyası yeterlidir. Servis, botun kendi kullanıcısıyla çalıştırılmalı, asla root yetkisiyle çalıştırılmamalıdır. Güvenlikle ilgili öneriler için Eggdrop güvenliği yazımıza bakın.

Özellikcrontab + botchksystemd
Yönetici yetkisi gerekir mi?HayırGenellikle evet
Çökme sonrası yeniden başlatmaBir sonraki kontrolde (dakikalar)Hemen
Açılışta başlatma@reboot veya ilk kontrolYerleşik
Günlük yönetimiBotun kendi log dosyalarıBotun log dosyaları ve sistem günlükleri

Sürekli Çöken Bir Bot

Otomatik yeniden başlatma, sorunu gizleyebilir. Bot her gün birkaç kez çöküyorsa ve her seferinde yeniden açılıyorsa, kanallarınız kısa kesintilerle de olsa korumasız kalıyor demektir. Log dosyalarını düzenli inceleyin; çökmeden hemen önceki satırlar genellikle sorunlu scripti veya bellek hatasını gösterir. Sık karşılaşılan hatalar için Eggdrop sık hatalar yazımıza, log yapılandırması için log ayarları yazımıza bakın.

Gerçek Bir Senaryo

Bir botun sahibi, sağlayıcısının gece yaptığı bir bakım sonrasında botun sabaha kadar kapalı kaldığını fark ediyor. Kanal bu süre zarfında bir flood saldırısına uğramış ve kimse müdahale edememiş. Sahibi autobotchk'ı çalıştırıyor, crontab kaydını doğruluyor ve bir @reboot satırı ekliyor. Ardından botu kapatıp kontrol scriptini elle çalıştırarak sistemi test ediyor. Bir sonraki bakımda bot, sunucu açıldıktan bir dakika sonra kanala geri dönüyor.

Bildirimler

Bot çöktüğünde yeniden başlaması güzeldir, ama bundan haberdar olmak da istersiniz. autobotchk tarafından oluşturulan kontrol scripti, botu yeniden başlattığında sunucunun e-posta sistemi üzerinden bildirim gönderebilir. Sunucunuzda e-posta gönderimi yapılandırılmamışsa bu bildirimler ulaşmaz. Alternatif olarak botun açılışta partyline'a veya bir yönetim kanalına "yeniden başladım" mesajı göndermesini sağlayan küçük bir script yazabilirsiniz; bu sayede sık yeniden başlatmaları hemen fark edersiniz.

Bu yöntem, e-posta altyapısına ihtiyaç duymadan sizi anında bilgilendirir ve yönetim kanalında bir kayıt da bırakır.

Sonuç

autobotchk ve crontab, Eggdrop botunun kesintisiz çalışması için kurulması gereken ilk güvenlik ağıdır. Kurulumu yapın, crontab kaydını kontrol edin, sistemi elle test edin ve yönetici yetkiniz varsa systemd'yi değerlendirin. Botun kendisini yeniden başlatması güzel, ama çökmelerin nedenini bulmak daha önemli. Kanalda kim ne zaman görüldü sorusuna cevap veren popüler bir özellik için sıradaki rehberimiz Eggdrop seen.

IRC sorunun mu var? Kanalda birlikte çözelim.

💬 Kanala Bağlan

Sıkça Sorulan Sorular

autobotchk ne yapar?

Botun çalışıp çalışmadığını düzenli aralıklarla kontrol eden bir botchk scripti oluşturur ve bunu crontab'a ekler. Bot çalışmıyorsa yeniden başlatır.

Crontab kaydını nasıl görürüm?

Botu çalıştıran kullanıcıyla crontab -l komutunu çalıştırarak mevcut kayıtları görebilirsiniz.

systemd mi crontab mı kullanmalıyım?

Sunucuda yönetici yetkiniz varsa systemd daha düzenli bir çözüm sunar. Paylaşımlı bir shell hesabındaysanız crontab tek seçenek olabilir.