Panas musim panas — semuanya meleleh, bahkan harga kami.−25%−25% pada setiap paket tahunan, hingga 31 AgustusLihat paket
EQVPS
Mulai

Jaga bot berjalan 24/7 di VPS (agar tidak pernah mati diam-diam)

15 Jun 2026 · 3 mnt baca · EQVPS Team

Ada dua cara sebuah bot "tidak bekerja" di server. Yang jelas: ia berhenti detik Anda menutup SSH. Yang licik: ia berjalan baik selama dua hari, crash jam 4 pagi karena suatu error tak-tertangani, dan Anda baru tahu berjam-jam kemudian saat seseorang bertanya mengapa ia mati. Keduanya punya perbaikan yang sama, dan itu bukan "ingat untuk restart" — melainkan menyerahkan tugasnya ke systemd, yang menjaga hal tetap menyala agar Anda tidak perlu.

Mengapa ia mati saat Anda keluar

Jika Anda meluncurkannya dengan python bot.py di sesi SSH Anda, proses itu adalah anak dari sesi itu. Tutup sesinya, prosesnya ikut. nohup dan & menutupi ini, tapi mereka tidak memberi Anda restart-saat-crash dan mulai-saat-boot — jadi Anda telah memecahkan masalah kecil dan mempertahankan yang besar.

Perbaikan sebenarnya: layanan systemd

Ini keseluruhannya. Buat /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

Dua baris melakukan pekerjaan berat:

Saat ia masih berulah — baca log-nya

Bot yang terus crash-loop tidak diperbaiki dengan restart lebih keras; ada sesuatu yang benar-benar salah. systemd menangkap stdout/stderr, jadi:

systemctl status mybot          # naik atau turun, kode keluar terakhir
journalctl -u mybot -n 100      # log terkini + error tempat ia mati
journalctl -u mybot -f          # ikuti langsung

Penyebabnya hampir selalu tepat di sana: variabel lingkungan yang hilang, eksepsi tak-tertangani, timeout API, pembunuhan OOM. Perbaiki ituRestart=always adalah jaring pengaman, bukan obat untuk bug sungguhan.

Tip: jika log menunjukkan bot dibunuh karena memori, Anda telah melampaui mesinnya — periksa panduan penentuan ukuran.

Kapan tmux atau pm2 masuk akal sebagai gantinya

systemd bukan satu-satunya jawaban, hanya bawaan terbaik:

Untuk satu bot selalu-aktif atau agen, systemd adalah hal paling sederhana yang benar-benar bekerja — ia sudah ada di server, tidak butuh perkakas tambahan, dan melakukan restart, mulai-saat-boot dan logging secara bawaan.

Kesimpulan jujur

Uptime bukan soal server lebih besar atau lebih banyak disiplin — melainkan soal tidak mengikat proses Anda ke laptop Anda. Bungkus dalam unit systemd dengan Restart=always dan enable, dan periksa journalctl saat ada yang tidak beres. Lakukan itu sekali dan bot Anda tetap menyala entah Anda mengawasi atau tidur. (Mesin baru? Kunci dulu — bot 24/7 juga target 24/7.)


Butuh tempat menjalankannya? Paket Nano ($3/bln) menjaga bot hidup 24/7 — systemd melakukan sisanya.

Pertanyaan umum

Mengapa bot saya berhenti saat saya menutup SSH?

Karena Anda memulainya di dalam sesi SSH Anda, jadi ia terikat ke sesi itu dan mati saat Anda terputus. Perbaikannya adalah menjalankannya sebagai layanan latar belakang yang independen dari login Anda — systemd adalah cara yang bersih, tmux adalah cara cepat.

Bagaimana saya restart-otomatis bot saat crash?

Jalankan sebagai layanan systemd dengan Restart=always dan sedikit jeda RestartSec. systemd lalu meluncurkan ulang proses dalam hitungan detik dari crash apa pun, tanpa batas, tanpa pengasuhan. Satu baris itu adalah perbedaan antara 'ia mati jam 4 pagi' dan 'ia berkedip dan pulih'.

Bagaimana saya membuat bot mulai otomatis setelah reboot?

systemctl enable layanan Anda. 'enable' menyambungkannya untuk mulai saat boot, 'start' menjalankannya sekarang — lakukan keduanya (systemctl enable --now). Setelah reboot apa pun, bot kembali sendiri tanpa Anda masuk.

systemd atau pm2 atau tmux — mana yang harus saya pakai?

systemd untuk apa pun yang nyata dan berumur-panjang: ia menangani restart, mulai-saat-boot dan logging secara native, tanpa perkakas tambahan. tmux bagus untuk uji cepat atau mengawasi eksekusi interaktif. pm2 masuk akal jika Anda hidup di Node dan ingin dasbornya, tapi itu satu hal lagi untuk dijaga tetap berjalan. Untuk satu bot selalu-aktif, systemd menang pada kesederhanaan.

Bagaimana saya melihat mengapa bot saya terus crash?

journalctl -u yourbot -n 100 menampilkan log terkini dan error tempat ia mati; tambahkan -f untuk mengikuti langsung. Di sinilah penyebab sebenarnya biasanya bersembunyi — env var yang hilang, eksepsi tak-tertangani, timeout API. Perbaiki itu, jangan sekadar restart membabi buta.

← Kembali ke blogLihat paket dan harga →

Komentar

Belum ada komentar. Jadilah yang pertama.

Tinggalkan komentar

Komentar dimoderasi sebelum muncul.