Pendahuluan
Banyak tugas server bersifat berulang: backup harian, restart bot, membersihkan log, atau sinkronisasi file. Cron adalah penjadwal bawaan Linux yang menjalankan perintah otomatis sesuai jadwal. Artikel ini membahas format crontab, contoh nyata untuk VPS dan bot, logging, serta troubleshooting di Debian 13.
Cara Kerja Cron
Layanan cron memeriksa tabel jadwal (crontab) setiap menit. Jika waktu cocok, perintah dijalankan sebagai user pemilik crontab. Cocok untuk tugas menit, jam, harian, mingguan, dan bulanan.
Cek status layanan:
sudo systemctl status cronJika belum aktif:
sudo systemctl enable --now cronFormat Crontab
Format dasar:
* * * * * perintah-yang-dijalankan
- - - - -
| | | | |
| | | | +-- hari dalam minggu (0-7, 0 dan 7 = Minggu)
| | | +---- bulan (1-12)
| | +------ tanggal (1-31)
| +-------- jam (0-23)
+---------- menit (0-59)Contoh cepat:
*/5 * * * * echo "setiap 5 menit"
0 * * * * echo "setiap jam tepat"
0 2 * * * echo "setiap jam 2 pagi"
0 0 * * 0 echo "setiap Minggu tengah malam"Edit crontab user aktif:
crontab -eMelihat jadwal aktif:
crontab -lContoh 1: Backup Otomatis dengan Rsync
Jalankan backup setiap jam 2 pagi ke folder /backup:
0 2 * * * /usr/bin/rsync -a /home/debian/bot/ /backup/bot/ >> /var/log/backup-bot.log 2>&1Panduan lengkap backup dengan rsync dibahas di artikel backup otomatis VPS dengan rsync dan cron.
Contoh 2: Restart Bot Setiap Hari
Kadang bot perlu restart terjadwal untuk memuat ulang memori. Contoh restart layanan systemd setiap jam 3 pagi:
0 3 * * * /usr/bin/systemctl restart bot-telegram >> /var/log/bot-restart.log 2>&1Untuk bot PM2:
0 3 * * * /usr/bin/pm2 restart bot-telegram >> /var/log/bot-restart.log 2>&1Contoh 3: Script Cadangan Database
Buat script /home/debian/backup-db.sh:
#!/bin/bash
TANGGAL=$(date +%F)
mysqldump -u root -p'RAHASIA' nama_db > /backup/db-$TANGGAL.sql
find /backup -name "db-*.sql" -mtime +7 -deleteJadikan executable dan jadwalkan:
chmod +x /home/debian/backup-db.sh30 1 * * * /home/debian/backup-db.sh >> /var/log/backup-db.log 2>&1Logging dan Troubleshooting
Secara bawaan output cron dikirim via email lokal. Agar mudah dipantau, selalu arahkan ke file log dengan >> /var/log/nama.log 2>&1.
Melihat log cron:
grep CRON /var/log/syslog
journalctl -u cron -fMasalah umum:
- Script tidak jalan: gunakan path absolut (
/usr/bin/python3, bukanpython3). Cek denganwhich python3. - Permission denied: pastikan script executable dan user cron punya akses ke folder tujuan.
- Variabel environment hilang: cron tidak memuat
.bashrc. Definisikan manual di awal crontab bila perlu:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binTabel Jadwal Umum
| Jadwal | Arti |
|---|---|
*/10 * * * * | Setiap 10 menit |
0 * * * * | Setiap jam |
0 2 * * * | Setiap hari jam 02:00 |
0 0 * * 0 | Setiap Minggu jam 00:00 |
0 0 1 * * | Setiap tanggal 1 jam 00:00 |
Kelebihan dan Kekurangan
Kelebihan cron:
- Bawaan sistem, tanpa instalasi tambahan.
- Sederhana dan hemat resource.
- Cocok untuk backup, restart, dan pembersihan rutin.
Kekurangan:
- Tidak ada retry otomatis bila perintah gagal.
- Tidak cocok untuk interval di bawah 1 menit.
- Monitoring perlu log manual atau bot notifikasi Telegram.
Kesimpulan
Cron adalah fondasi otomatisasi VPS Debian 13. Mulai dari backup rsync, restart bot, hingga dump database — semua cukup dengan satu baris crontab plus logging yang rapi. Untuk tugas kritis, tambahkan notifikasi Telegram agar kegagalan cepat diketahui.