Catatan Kuliah: Scheduling & Cron Jobs
Dasar Teori
1. Konsep Scheduling
Scheduling adalah mekanisme pengaturan kapan suatu proses, program, atau script dijalankan oleh sistem operasi.
Dalam administrasi server, banyak pekerjaan yang perlu dilakukan secara otomatis, misalnya:
- Backup database setiap malam
- Menghapus file log lama setiap minggu
- Mengirim laporan harian
- Monitoring penggunaan disk
- Sinkronisasi data antar server
Tanpa scheduling, administrator harus menjalankan pekerjaan tersebut secara manual yang berisiko terlupa dan tidak efisien.
Linux menyediakan beberapa utilitas scheduling, yaitu:
| Utilitas | Fungsi |
|---|---|
| cron | Menjalankan tugas berulang secara periodik |
| at | Menjalankan tugas satu kali pada waktu tertentu |
| anacron | Menjalankan tugas periodik yang mungkin terlewat ketika komputer mati |
2. Cron Service
Cron adalah daemon (service yang berjalan di background) yang bertugas memeriksa jadwal dan menjalankan perintah sesuai waktu yang telah ditentukan.
Pada sebagian besar distribusi Linux, service cron berjalan otomatis sejak sistem dinyalakan.
Memeriksa status cron:
systemctl status cronatau pada beberapa distribusi:
systemctl status crond3. Crontab
Crontab (Cron Table) adalah file yang berisi daftar jadwal tugas milik pengguna.
Menampilkan isi crontab:
crontab -lMengedit crontab:
crontab -eMenghapus seluruh isi crontab:
crontab -r4. Format Penjadwalan Cron
Struktur umum:
* * * * * command│ │ │ │ ││ │ │ │ └── Hari (0–7)│ │ │ └──── Bulan (1–12)│ │ └────── Tanggal (1–31)│ └──────── Jam (0–23)└────────── Menit (0–59)Keterangan:
| Field | Nilai |
|---|---|
| Menit | 0-59 |
| Jam | 0-23 |
| Tanggal | 1-31 |
| Bulan | 1-12 |
| Hari | 0-7 (0 dan 7 = Minggu) |
5. Karakter Khusus Cron
Asterisk (*)
Berarti "semua nilai".
* * * * *Setiap menit.
Koma (,)
Beberapa nilai.
0 8,12,16 * * *Pukul 08:00, 12:00, dan 16:00.
Tanda Hubung (-)
Rentang nilai.
0 8-17 * * *Setiap jam dari 08:00 sampai 17:00.
Slash (/)
Interval.
*/10 * * * *Setiap 10 menit.
6. Contoh Cron Jobs
Menjalankan backup setiap jam
0 * * * * /bin/bash /home/user/backup.shMenjalankan backup setiap hari pukul 22.00
0 22 * * * /bin/bash /home/user/backup.shMenjalankan monitoring setiap 5 menit
*/5 * * * * /bin/bash /home/user/monitor.shMembersihkan file log setiap Minggu
0 0 * * 0 rm -f /var/log/temp.log7. Redirect Output
Sangat disarankan menyimpan hasil eksekusi ke file log.
Tanpa log:
0 22 * * * backup.shDengan log:
0 22 * * * backup.sh >> backup.log 2>&1Penjelasan:
| Sintaks | Fungsi |
|---|---|
| >> | Menambahkan output ke file |
| 2>&1 | Menyimpan error ke file yang sama |
8. at Command
Perintah at digunakan untuk menjalankan tugas hanya satu kali.
Contoh:
echo "shutdown now" | at 23:00Artinya:
- Perintah shutdown dikirim ke scheduler.
- Sistem menjalankan shutdown tepat pukul 23:00.
9. Format Waktu pada at
Beberapa contoh:
at 14:30Pukul 14.30 hari ini.
at now + 10 minutes10 menit dari sekarang.
at now + 2 hours2 jam dari sekarang.
at tomorrowBesok pada waktu yang sama.
at midnightTengah malam.
10. Mengelola Job at
Melihat daftar job:
atqContoh output:
3 Thu Jul 10 09:30:00 2025 a userMelihat isi job:
at -c 3Menghapus job:
atrm 3Studi Kasus
Kasus 1: Backup Otomatis
Buat file script:
nano backup.shIsi:
#!/bin/bashtar -czf backup_$(date +%F).tar.gz /home/user/dataBeri hak eksekusi:
chmod +x backup.shJadwalkan setiap pukul 22.00:
0 22 * * * /home/user/backup.shKasus 2: Monitoring Kapasitas Disk
Script:
#!/bin/bashdf -h > /home/user/disk_report.txtJadwalkan setiap 30 menit:
*/30 * * * * /home/user/checkdisk.shTroubleshooting Umum
Cron tidak berjalan
Periksa service:
systemctl status cronScript tidak dieksekusi
Pastikan executable:
chmod +x script.shPath tidak ditemukan
Gunakan path absolut.
Salah:
backup.shBenar:
/home/user/backup.shCek log cron
Pada Ubuntu:
grep CRON /var/log/syslogPada CentOS/RHEL:
grep CRON /var/log/cron