Eggdrop autobotchk ve crontab: Botu Çöktüğünde Otomatik Başlatmak
İçindekiler
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.
| Özellik | crontab + botchk | systemd |
|---|---|---|
| Yönetici yetkisi gerekir mi? | Hayır | Genellikle evet |
| Çökme sonrası yeniden başlatma | Bir sonraki kontrolde (dakikalar) | Hemen |
| Açılışta başlatma | @reboot veya ilk kontrol | Yerleşik |
| Günlük yönetimi | Botun 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ğlanSı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.


