EQVPS

একটি VPS-এ একটি bot 24/7 চালু রাখুন (যাতে এটি কখনও নীরবে না মরে)

Jun 15, 2026 · 3 min read · EQVPS Team

একটি সার্ভারে একটি bot "কাজ করে না" দুই উপায়ে। স্পষ্টটা: আপনি SSH বন্ধ করার সেকেন্ডে এটি থামে। চতুরটা: এটি দুই দিন ভালোই চলে, ভোর 4টায় কোনো unhandled error-এ ক্র্যাশ করে, আর কেউ জিজ্ঞেস করলে যে এটি down কেন তখন ঘণ্টা পরে আপনি জানেন। দুটোরই একই সমাধান, আর এটি "restart করতে মনে রাখা" নয় — এটি কাজটা systemd-কে দেওয়া, যা জিনিস চালু রাখে যাতে আপনাকে করতে না হয়।

আপনি log out করলে এটি মরে কেন

আপনি এটি আপনার SSH সেশনে python bot.py দিয়ে চালু করলে, process সেই সেশনের একটি child। সেশন বন্ধ করুন, process এর সাথে যায়। nohup& এটি ঢেকে দেয়, কিন্তু এরা আপনাকে কোনো restart-on-crash ও start-on-boot দেয় না — তাই আপনি ছোট সমস্যা সমাধান করে বড়টা রেখে দিয়েছেন।

আসল সমাধান: একটি systemd সার্ভিস

এটাই পুরো ব্যাপার। /etc/systemd/system/mybot.service তৈরি করুন:

[Unit]
Description=My bot
After=network-online.target

[Service]
WorkingDirectory=/home/youruser/mybot
ExecStart=/home/youruser/mybot/venv/bin/python bot.py
Restart=always
RestartSec=5
User=youruser
Environment=API_KEY=...

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now mybot

দুটি লাইন ভারী কাজটা করছে:

যখন এটি তবুও খারাপ আচরণ করে — log পড়ুন

যে bot crash-loop করতে থাকে তা কঠোরভাবে restart করে ঠিক হয় না; কিছু আসলে ভুল। systemd stdout/stderr ধরে, তাই:

systemctl status mybot          # up বা down, শেষ exit code
journalctl -u mybot -n 100      # সাম্প্রতিক log + এটি যে error-এ মরেছে
journalctl -u mybot -f          # live অনুসরণ করুন

কারণ প্রায় সবসময় ঠিক সেখানে: একটি অনুপস্থিত environment variable, একটি unhandled exception, একটি API timeout, একটি OOM kill। সেটি ঠিক করুন — Restart=always একটি safety net, একটি আসল bug-এর নিরাময় নয়।

টিপ: log যদি bot-কে memory-র জন্য kill হতে দেখায়, আপনি বক্সটি ছাড়িয়ে গেছেন — sizing গাইড দেখুন।

কখন বরং tmux বা pm2 মানায়

systemd একমাত্র উত্তর নয়, কেবল সেরা ডিফল্ট:

একটি একক always-on bot বা agent-এর জন্য, systemd সবচেয়ে সরল জিনিস যা আসলে কাজ করে — এটি ইতিমধ্যেই সার্ভারে, কোনো বাড়তি tooling লাগে না, ও restart, boot-start ও logging out of the box করে।

সৎ শেষ কথা

Uptime একটি বড় সার্ভার বা বেশি শৃঙ্খলা নিয়ে নয় — এটি আপনার process আপনার ল্যাপটপের সাথে না-বাঁধা নিয়ে। এটিকে Restart=alwaysenable সহ একটি systemd unit-এ মুড়ুন, ও কিছু ভুল হলে journalctl চেক করুন। এটি একবার করুন আর আপনি দেখুন বা ঘুমান, আপনার bot চালু থাকে। (নতুন বক্স? আগে এটি লক করুন — একটি 24/7 bot একটি 24/7 লক্ষ্যও।)


এটি চালানোর জন্য একটি জায়গা দরকার? একটি Nano প্ল্যান ($3/মাস) একটি bot 24/7 জীবিত রাখে — systemd বাকিটা করে।

FAQ

SSH বন্ধ করলে আমার bot থামে কেন?

কারণ আপনি এটি আপনার SSH সেশনের ভেতরে শুরু করেছেন, তাই এটি সেই সেশনের সাথে বাঁধা ও আপনি disconnect করলে মরে। সমাধান হলো এটিকে আপনার login থেকে স্বাধীন একটি background সার্ভিস হিসেবে চালানো — systemd পরিচ্ছন্ন উপায়, tmux দ্রুত উপায়।

একটি bot ক্র্যাশ করলে কীভাবে auto-restart করব?

এটিকে Restart=always ও একটি ছোট RestartSec বিলম্ব সহ একটি systemd সার্ভিস হিসেবে চালান। systemd তখন যেকোনো ক্র্যাশের কয়েক সেকেন্ডের মধ্যে process পুনরায় চালু করে, অনির্দিষ্টকালের জন্য, কোনো দেখভাল ছাড়া। সেই একটি লাইন 'এটি ভোর 4টায় মরেছিল' ও 'এটি একটু থমকে সেরে উঠেছিল'-র মধ্যে পার্থক্য।

একটি reboot-এর পরে একটি bot কীভাবে স্বয়ংক্রিয়ভাবে শুরু করব?

আপনার সার্ভিস systemctl enable করুন। 'enable' এটিকে boot-এ শুরু হতে যুক্ত করে, 'start' এটিকে এখন চালায় — দুটোই করুন (systemctl enable --now)। যেকোনো reboot-এর পরে, bot আপনার log in না-করেই নিজে থেকে ফিরে আসে।

systemd নাকি pm2 নাকি tmux — কোনটি ব্যবহার করব?

আসল ও দীর্ঘজীবী যেকোনো কিছুর জন্য systemd: এটি restart, boot-start ও logging native-ভাবে সামলায়, কোনো বাড়তি tooling নয়। tmux একটি দ্রুত পরীক্ষা বা একটি ইন্টারঅ্যাক্টিভ run দেখার জন্য দারুণ। pm2 যুক্তিসঙ্গত যদি আপনি Node-এ থাকেন ও এর dashboard চান, কিন্তু এটি চালু রাখার আরেকটি জিনিস। একটি একক always-on bot-এর জন্য, systemd সরলতায় জেতে।

আমার bot কেন ক্র্যাশ করতে থাকে তা কীভাবে দেখব?

journalctl -u yourbot -n 100 সাম্প্রতিক log ও এটি যে error-এ মরেছে তা দেখায়; live অনুসরণ করতে -f যোগ করুন। এখানেই সাধারণত আসল কারণ লুকায় — একটি অনুপস্থিত env var, একটি unhandled exception, একটি API timeout। সেটি ঠিক করুন, শুধু অন্ধভাবে restart করবেন না।

← Back to blogSee plans & pricing →

মন্তব্য

এখনো কোনো মন্তব্য নেই। প্রথম হোন।

একটি মন্তব্য দিন

মন্তব্য প্রকাশের আগে মডারেট করা হয়।