Menambahkan Jobs pada cron pada Linux ataupun UNIX

Posted in By k0p0nkkk 0 comments

Cron job biasa digunakan untuk penjadwalan command untuk dieksekusi secara periodic, biasanya berupa script. Cron service (daemon) berjalan di background dan secara konstan mengecek file /etc/crontab, direktori /etc/cron.*/. Dan juga mengecek direktori /var/spool/cron/
Macam-macam command crontab
crontab -e     Edit crontab file, atau membuat baru jika file tidak ada.
crontab -l      Melihat list dari crontab file.
crontab -r      Menghapus crontab file.
crontab -v      Melihat kali terakhir editan crontab file. (hanya tersedia pada system tertentu). 

Syntax of crontab (deskripsi Field)
Cron job terlihat mengikuti user job:

1 2 3 4 5 /path/to/command arg1 arg2

OR

1 2 3 4 5 /root/backup.sh

dimana,
  • 1: Minute (0-59)
  • 2: Hours (0-23)
  • 3: Day (0-31)
  • 4: Month (0-12 [12 == December])
  • 5: Day of the week(0-7 [7 or 0 == sunday])
  • /path/to/command - Script or command name to schedule
Format yang mudah diingat:
* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
Cron job terlihat mengikuti system jobs:
1 2 3 4 5 USERNAME /path/to/command arg1 arg2
OR
1 2 3 4 5 USERNAME /path/to/script.sh
Contoh : Install Backup Job Script
Case pada solaris os jalankan command dibawah terlebih dahulu
EDITOR=vi
export EDITOR
crontab -e

Kita ingin menjalankan script dengan nama /temp/copyfile.sh setiap hari pada jam 1 pagi, maka masukkan command berikut ini :
# crontab -e
masukkan pada baris terakhir
0 1 * * * /temp/copyfile.sh
Simpan dan tutup file
Contoh lainnya
Jalankan script pada jam 3:30 siang setiap bulan, ketikkan:
30 15 1 * * /temp/copyfile.sh
Jalankan script pada jam 8 malam setiap hari kerja (senin-jumat), ketikkan:
0 20 * * 1-5 /temp/copyfile.sh
Jalankan script pada menit ke 25 setelah tengah malam, jam 2 pagi, jam 4 pagi, setiap hari, ketikkan:
25 0-23/2 * * * /temp/copyfile.sh
Jalankan script pada jam 1 lewat 2menit setaip Minggu, ketikkan:
2 1 * * sun /temp/copyfile.sh
Disable Email Output
Secara default keluaran command script akan mengirim email ke account email local. Untuk memberhentikan penerimaan email dari crontab maka kita harus menambahkan “>/dev/null 2>&1”, sebagai contoh:
30 5 * * * /temp/copyfile.sh >/dev/null 2>&1
Untuk mengirimkan notifikasi email ke email lain nya selain email local maka kita bisa menambahkan variable MAILTO pada cron job:
MAILTO="k0p0nkkk@blogspot.com"
30 5 * * * /temp/copyfile.sh >/dev/null 2>&1
Menggunakan special string untuk menghemat waktu
Berikut special string yang dapat kita gunakan untuk menghemat waktu kita
Special string
Arti
@reboot
Jalankan sekali pada saat startup.
@yearly
Jalankan sekali setahun, "0 0 1 1 *".
@annually
(sama dengan @yearly)
@monthly
Jalankan sekali sebulan, "0 0 1 * *".
@weekly
Jalankan sekali seminggu, "0 0 * * 0".
@daily
Jalankan sehari sekali, "0 0 * * *".
@midnight
(sama dengan @daily)
@hourly
Jalankan setiap 1 jam sekali, "0 * * * *".
Jalankan ntpdate every hour:
@hourly /path/to/ntpdate
Buat backup setiap hari:
@daily /path/to/backup/script.sh
Memahami Default /etc/crontab
Typical isi file /etc/crontab:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Directory
Description
/etc/cron.d/
Taruh semua script disini dan panggil mereka dari etc/crontab file.
/etc/cron.daily/
Menjalankan semua script sehari sekali
/etc/cron.hourly/
Menjalankan semua script sejam sekali
/etc/cron.monthly/
Menjalankan semua script sebulan sekali
/etc/cron.weekly/
Menjalankan semua script seminggu sekali
Backup Installed Cronjobs
Simple saja untuk melakukan backup cronjob yang sudah dibuat ketikkan command berikut:
# crontab -l > /temp2/users.root.backup
# crontab -u userName -l > /temp2/users.userName.backup