EQVPS

botን በVPS ላይ 24/7 እያሄደ ማቆየት (በጭራሽ በጸጥታ እንዳይሞት)

ጁን 15 2026 · 2 ደቂቃ ንባብ · EQVPS Team

bot በserver ላይ "አይሠራም" የሚልባቸው ሁለት መንገዶች አሉ። ግልጹ: SSH በዘጉ ቅጽበት ይቆማል። ተንኮለኛው: ለሁለት ቀን በደንብ ይሄዳል፣ በ4am በሆነ ያልተያዘ error crash ያደርጋል፣ እና አንድ ሰው ለምን down እንደሆነ ሲጠይቅ ከሰዓታት በኋላ ታውቃላችሁ። ሁለቱም ተመሳሳይ fix አላቸው፣ እና "እንደገና ማስጀመር አስታውስ" አይደለም — ስራውን ለsystemd ማስረከብ ነው፣ ነገሮችን up ስለሚያቆይ እርስዎ እንዳታደርጉ።

ሲወጡ ለምን ይሞታል

በSSH sessionዎ ውስጥ በpython bot.py ካስጀመሩት፣ processው የዚያ session ልጅ ነው። sessionን ይዝጉ፣ processው አብሮ ይሄዳል። nohup እና & ይህን ይሸፍናሉ፣ ግን restart-on-crash እና start-on-boot አይሰጡዎትም — ስለዚህ ትንሹን ችግር ፈትተው ትልቁን ይዘዋል።

እውነተኛው fix: systemd service

ሙሉ ነገሩ ይህ ነው። /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

ሁለት መስመሮች ከባዱን ስራ ይሠራሉ:

አሁንም መጥፎ ባህሪ ሲያሳይ — logs ያንብቡ

crash-loop የሚያደርግ bot ጠንክሮ በrestart አይስተካከልም፤ በእውነት የሆነ ስህተት አለ። systemd stdout/stderr ይይዛል፣ ስለዚህ:

systemctl status mybot          # up or down, last exit code
journalctl -u mybot -n 100      # recent logs + the error it died on
journalctl -u mybot -f          # follow live

ምክንያቱ ማለት ይቻላል ሁልጊዜ ልክ እዚያ ነው: የጎደለ environment variable፣ ያልተያዘ exception፣ API timeout፣ OOM kill። ያንን ያስተካክሉ — Restart=always የደኅንነት መረብ ነው፣ ለእውነተኛ bug መድኃኒት አይደለም።

ጠቃሚ ምክር: logs botው ለmemory እየተገደለ ካሳዩ፣ boxን አድገዋል — sizing guide ይመልከቱ።

tmux ወይም pm2 በምትኩ መቼ ትርጉም እንዳላቸው

systemd ብቸኛው መልስ አይደለም፣ ብቻ ምርጡ ነባሪ:

ለአንድ always-on bot ወይም agentsystemd በእውነት የሚሠራ ትንሹ ነገር ነው — አስቀድሞ በserver ላይ ነው፣ ተጨማሪ tooling አያስፈልገውም፣ እና restart፣ boot-start እና logging out of the box ያደርጋል።

ታማኝ መደምደሚያ

Uptime ስለ ትልቅ server ወይም ስለ ተጨማሪ discipline አይደለም — processዎን ከlaptopዎ ስለ አለማያያዝ ነው። ከRestart=always እና enable ጋር በsystemd unit ውስጥ ይሸፍኑት፣ እና የሆነ ነገር ሲበላሽ journalctl ይፈትሹ። ያንን አንድ ጊዜ ያድርጉ እና botዎ እየተመለከቱ ወይም እየተኙ up ይቆያል። (አዲስ box? መጀመሪያ ይቆልፉት — 24/7 bot 24/7 target ም ነው።)


የሚያሄዱበት ቦታ ይፈልጋሉ? Nano plan ($3/ወር) botን 24/7 በሕይወት ያቆያል — systemd ቀሪውን ያደርጋል።

FAQ

botዬ SSH ስዘጋ ለምን ይቆማል?

በSSH sessionዎ ውስጥ ስለጀመሩት፣ ለዚያ session የታሰረ ነው እና ሲቋረጡ ይሞታል። መፍትሔው ከloginዎ ነፃ የሆነ background service አድርጎ ማሄድ ነው — systemd ንፁሁ መንገድ ነው፣ tmux ፈጣኑ መንገድ ነው።

botን ሲcrash ያደርግ በራስ-ሰር እንዴት እንደገና ማስጀመር?

ከRestart=always እና ትንሽ RestartSec delay ጋር እንደ systemd service ያሂዱት። systemd ከዚያ processን ከማንኛውም crash በሰከንዶች ውስጥ እንደገና ያስጀምራል፣ ላልተወሰነ ጊዜ፣ ያለ babysitting። ያ አንድ መስመር 'በ4am ሞተ' እና 'blip አድርጎ አገገመ' መካከል ያለው ልዩነት ነው።

botን ከreboot በኋላ በራስ-ሰር እንዴት እንዲጀምር ማድረግ?

serviceዎን systemctl enable ያድርጉ። 'enable' በboot እንዲጀምር ያገናኘዋል፣ 'start' አሁን ያሄደዋል — ሁለቱንም ያድርጉ (systemctl enable --now)። ከማንኛውም reboot በኋላ፣ botው ሳይገቡ በራሱ ይመለሳል።

systemd ወይስ pm2 ወይስ tmux — የትኛውን መጠቀም አለብኝ?

systemd ለማንኛውም እውነተኛ እና ረጅም-የሚኖር: restart፣ boot-start እና logging በnative ያስተናግዳል፣ ተጨማሪ tooling የለም። tmux ለፈጣን ፈተና ወይም interactive run ለመመልከት ጥሩ ነው። pm2 በNode ውስጥ የሚኖሩ እና dashboardውን የሚፈልጉ ከሆኑ ምክንያታዊ ነው፣ ግን በሕይወት ማቆየት ያለብዎ ሌላ ነገር ነው። ለአንድ always-on bot፣ systemd በቀላልነት ያሸንፋል።

botዬ ለምን crash ማድረግ እንደሚቀጥል እንዴት አያለሁ?

journalctl -u yourbot -n 100 የቅርብ ጊዜ logs እና የሞተበትን error ያሳያል፤ live ለመከተል -f ይጨምሩ። ይህ ብዙ ጊዜ እውነተኛው ምክንያት የሚደበቅበት ነው — የጎደለ env var፣ ያልተያዘ exception፣ API timeout። ያንን ያስተካክሉ፣ በዕውር ብቻ አይየ restart አያድርጉ።

← ወደ ብሎግ ተመለስዕቅዶች & ዋጋዎች ይመልከቱ →

አስተያየቶች

እስካሁን አስተያየቶች የሉም። መጀመሪያ ይሁኑ።

አስተያየት ይተዉ

አስተያየቶች ከመታየታቸው በፊት ይጣራሉ።