Catatan Kuliah: Scheduling & Cron Jobs

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:

UtilitasFungsi
cronMenjalankan tugas berulang secara periodik
atMenjalankan tugas satu kali pada waktu tertentu
anacronMenjalankan 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 cron

atau pada beberapa distribusi:

systemctl status crond

3. Crontab

Crontab (Cron Table) adalah file yang berisi daftar jadwal tugas milik pengguna.

Menampilkan isi crontab:

crontab -l

Mengedit crontab:

crontab -e

Menghapus seluruh isi crontab:

crontab -r

4. Format Penjadwalan Cron

Struktur umum:

* * * * * command│ │ │ │ ││ │ │ │ └── Hari (0–7)│ │ │ └──── Bulan (1–12)│ │ └────── Tanggal (1–31)│ └──────── Jam (0–23)└────────── Menit (0–59)

Keterangan:

FieldNilai
Menit0-59
Jam0-23
Tanggal1-31
Bulan1-12
Hari0-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.sh

Menjalankan backup setiap hari pukul 22.00

0 22 * * * /bin/bash /home/user/backup.sh

Menjalankan monitoring setiap 5 menit

*/5 * * * * /bin/bash /home/user/monitor.sh

Membersihkan file log setiap Minggu

0 0 * * 0 rm -f /var/log/temp.log

7. Redirect Output

Sangat disarankan menyimpan hasil eksekusi ke file log.

Tanpa log:

0 22 * * * backup.sh

Dengan log:

0 22 * * * backup.sh >> backup.log 2>&1

Penjelasan:

SintaksFungsi
>>Menambahkan output ke file
2>&1Menyimpan error ke file yang sama

8. at Command

Perintah at digunakan untuk menjalankan tugas hanya satu kali.

Contoh:

echo "shutdown now" | at 23:00

Artinya:

  • Perintah shutdown dikirim ke scheduler.
  • Sistem menjalankan shutdown tepat pukul 23:00.

9. Format Waktu pada at

Beberapa contoh:

at 14:30

Pukul 14.30 hari ini.

at now + 10 minutes

10 menit dari sekarang.

at now + 2 hours

2 jam dari sekarang.

at tomorrow

Besok pada waktu yang sama.

at midnight

Tengah malam.


10. Mengelola Job at

Melihat daftar job:

atq

Contoh output:

3 Thu Jul 10 09:30:00 2025 a user

Melihat isi job:

at -c 3

Menghapus job:

atrm 3

Studi Kasus

Kasus 1: Backup Otomatis

Buat file script:

nano backup.sh

Isi:

#!/bin/bashtar -czf backup_$(date +%F).tar.gz /home/user/data

Beri hak eksekusi:

chmod +x backup.sh

Jadwalkan setiap pukul 22.00:

0 22 * * * /home/user/backup.sh

Kasus 2: Monitoring Kapasitas Disk

Script:

#!/bin/bashdf -h > /home/user/disk_report.txt

Jadwalkan setiap 30 menit:

*/30 * * * * /home/user/checkdisk.sh

Troubleshooting Umum

Cron tidak berjalan

Periksa service:

systemctl status cron

Script tidak dieksekusi

Pastikan executable:

chmod +x script.sh

Path tidak ditemukan

Gunakan path absolut.

Salah:

backup.sh

Benar:

/home/user/backup.sh

Cek log cron

Pada Ubuntu:

grep CRON /var/log/syslog

Pada CentOS/RHEL:

grep CRON /var/log/cron