Apa Itu Cron Job?
Cron job adalah scheduled task di server Linux yang menjalankan command/script secara otomatis pada waktu tertentu. Contoh use case:
- Backup database tiap malam jam 2
- Kirim email reminder ke customer tiap pagi
- Refresh cache website tiap jam
- Sync data dari API eksternal tiap 15 menit
- Trigger WordPress wp-cron secara real (bukan virtual)
- Generate report bulanan otomatis
Tanpa cron, semua tugas harus dijalankan manual atau bergantung pada user trigger (lemot & tidak reliable).
Setup Cron di cPanel
- Login cPanel
- Section Advanced → klik Cron Jobs
- Section "Cron Email": isi email Anda untuk notifikasi output cron (recommended)
- Section "Add New Cron Job":
- Common Settings: dropdown preset (Once Per Hour, Daily, Weekly, dll)
- Atau isi manual: Minute, Hour, Day, Month, Weekday
- Command: command yang akan dijalankan
- Klik Add New Cron Job
Cron langsung aktif. Edit/delete dari list di bawah.
Memahami Syntax Cron
Format cron: * * * * * command
┌─── Menit (0-59) │ ┌─ Jam (0-23) │ │ ┌─ Tanggal (1-31) │ │ │ ┌─ Bulan (1-12) │ │ │ │ ┌─ Hari (0-7, 0&7=Minggu) │ │ │ │ │ * * * * * command
Contoh:
0 2 * * *— tiap hari jam 02:00*/15 * * * *— tiap 15 menit0 */6 * * *— tiap 6 jam (00:00, 06:00, 12:00, 18:00)0 9 * * 1— tiap Senin jam 09:000 0 1 * *— tiap tanggal 1 bulan jam 00:0030 23 * * 0— tiap Minggu jam 23:300 8-17 * * 1-5— tiap jam dari 08:00–17:00, Senin–Jumat
Tool: crontab.guru — generate & explain cron syntax visual.
Contoh Command yang Sering Dipakai
1. Jalankan Script PHP
/usr/local/bin/php /home/username/public_html/script.php
Cek path PHP di cPanel: section Software → MultiPHP Manager. Untuk PHP 8.2: /usr/local/bin/ea-php82.
2. Jalankan WordPress wp-cron Real (Disable Virtual)
Step 1: edit wp-config.php tambahkan define('DISABLE_WP_CRON', true);
Step 2: cron job tiap 15 menit:
*/15 * * * * /usr/local/bin/php /home/username/public_html/wp-cron.php >/dev/null 2>&1
Manfaat: lebih reliable, tidak slow first-visitor.
3. Backup Database
0 2 * * * mysqldump -u dbuser -ppassword dbname | gzip > /home/username/backups/db-$(date +\%Y\%m\%d).sql.gz
4. Hit URL (curl)
0 * * * * curl -s https://namadomain.com/cron/refresh-cache >/dev/null
5. Jalankan Node.js
0 3 * * * cd /home/username/app && /home/username/.nvm/versions/node/v20/bin/node script.js
6. Cleanup Old Files
0 0 * * 0 find /home/username/tmp -type f -mtime +7 -delete
Tips & Best Practice
- Suppress output: tambahkan
>/dev/null 2>&1di akhir command jika tidak butuh email per run - Log ke file:
>> /home/user/logs/cron.log 2>&1untuk debug - Escape karakter %: di cPanel pakai
\%bukan%(cron interpret % sebagai newline) - Set absolute path: jangan andalkan PATH environment, pakai full path command
- Test command manual dulu via SSH/Terminal sebelum schedule
- Frequency rasional: jangan tiap detik (overload server). Saung Hosting batasi minimal interval 5 menit untuk shared
- Cek status: cron job → kolom output tampil ketika eksekusi
- Lock file untuk prevent overlap: pakai
flockcommand
Limitasi Cron di Shared Hosting
Shared hosting Saung membatasi cron untuk fairness:
- Minimum interval: 5 menit (tidak bisa tiap menit)
- Max execution time: 60 detik per job (long-running script di-kill)
- Max concurrent cron: 5 job aktif sekaligus
- Tidak bisa cron command dengan privilege root
Untuk kebutuhan cron complex (queue worker, long-running batch), pakai VPS dengan akses crontab penuh.
Troubleshooting
1. Cron Tidak Jalan
Cek email Cron Email — biasanya ada error message. Common: typo path, permission denied, command not found.
2. "command not found"
Pakai full path: which php di SSH untuk dapat path lengkap.
3. Permission Denied
Set executable: chmod +x /home/user/script.sh.
4. WordPress wp-cron Double Run
Pastikan sudah set DISABLE_WP_CRON di wp-config.php sebelum schedule cron real.
5. Cron Timezone Salah
cPanel cron pakai server timezone (biasanya UTC atau WIB). Cek di Server Information cPanel.
Kesimpulan
Cron job adalah otomatisasi gratis yang sudah include di semua paket hosting cPanel. Setup 2 menit, manfaat seumur hidup. Pakai untuk backup, maintenance, scheduled task — bebaskan diri dari manual chore harian.
Hosting Saung support cron job di semua paket. Butuh VPS dengan crontab unlimited? Lihat paket VPS mulai 2 vCPU 2 GB RAM.