Crontab di Linux – dengan Contoh dan Alat Real-time

Diterbitkan: 2015-07-26

Mari kita jelajahi crontab, perintahnya, dan berbagai operasi yang terkait dengan Crontab.

Kita akan belajar bagaimana menjadwalkan tugas menggunakan utilitas cron, dan terakhir, kita juga akan membahas beberapa alat online yang membantu kita memformat dan menguji perintah cron.

Asal

Crontab adalah singkatan dari " tabel cron ". Kata cron telah diambil dari kata Yunani Chronos yang berarti waktu. Crontab adalah proses daemon sistem yang secara otomatis akan melakukan beberapa tugas dan pekerjaan sesuai waktu yang dijadwalkan.

Gunakan kasus

Crontab berguna untuk melakukan berbagai operasi seperti menangani pencadangan otomatis, memutar file log, menyinkronkan file antara mesin jarak jauh dan membersihkan folder sementara, dll. Crontab dapat digunakan untuk segala jenis pekerjaan, tetapi menjadi sangat berguna ketika kita mulai berurusan dengan jenis pekerjaan administrasi sistem.

Menggunakan cron, administrator dapat menjadwalkan pekerjaan untuk dijalankan pada waktu dan hari tertentu.

Jadi mari kita lihat bagaimana kita bisa mengatur ini.

Sintaks Crontab

Untuk menjalankan daftar perintah, utilitas cron membaca file konfigurasi. Untuk menafsirkan baris dalam tabel konfigurasi crontab , mengikuti sintaks Crontab. Crontab memiliki enam bidang, dan lima (1-5) bidang pertama menentukan tanggal dan waktu eksekusi. Bidang terakhir, yaitu bidang ke-6, dapat berupa nama pengguna dan/atau tugas /pekerjaan/perintah/skrip yang akan dieksekusi.

* * * * * USER_NAME COMMAND/SCRIPT-TO-EXECUTE

│ │ │ │ │
│ │ │ │ │
│ │ │ |_________ Hari Minggu (0 – 6) (0 hari Minggu, atau gunakan nama)
| ____________ Bulan (1 – 12),* berarti setiap bulan
| ________________ Hari dalam Bulan (1 – 31),* berarti setiap hari
| ________________ Jam (0 – 23),* artinya setiap jam
| ______ Menit (0 – 59), * artinya setiap menit

Catatan :

  • Asterisk (*) digunakan untuk mencocokkan semua nilai yang mungkin untuk suatu bidang. Misalnya, tanda bintang yang digunakan di bidang jam akan setara dengan setiap jam atau tanda bintang di bidang bulan akan setara dengan setiap bulan.
  • nama pengguna adalah opsional (hanya tersedia jika itu adalah file crontab sistem)

Contoh:

Mari kita pahami sintaks di atas dengan beberapa contoh

1. Jadwalkan cron untuk dieksekusi pada jam 5 pagi setiap hari

 0 5 * * * /scripts/job.sh

2. Jadwalkan cron untuk dieksekusi dua kali sehari pada pukul 6 pagi dan 6 sore

 0 6,18 * * * /scripts/job.sh

3. Jadwalkan cron untuk dieksekusi setiap menit

 * * * * * /scripts/job.sh

4. Jadwalkan cron untuk dieksekusi setiap hari Senin jam 7 malam.

 0 19 * * mon /scripts/job.sh

5. Jadwalkan cron untuk dieksekusi setiap 15 menit.

 */10 * * * * /scripts/job.sh

6. Jadwalkan cron untuk dieksekusi pada bulan-bulan tertentu

 * * * feb,jun,oct * /script/job.sh

7. Jalankan skrip shell /home/script/backup.sh pada tanggal 4 Maret pukul 07.25

 25 7 4 3 * /home/script/backup.sh

8. Jadwalkan cron untuk dieksekusi setiap 30 Detik

Karena kami tidak memiliki kendali atas detik di Crontab, tetapi kami dapat mencapainya melalui proses dua langkah di bawah ini.

  • Pertama-tama mari kita jadwalkan tugas yang berjalan setiap menit.
 * * * * * /home/scripts/script.sh
  • Sekarang mari kita gunakan perintah sleep untuk menghentikan eksekusi selama 30 detik.
 * * * * * sleep 30; /home/scripts/script.sh

Tugas di atas akan menghentikan eksekusi selama 30 detik, dan akan dilanjutkan kembali.

Jenis file konfigurasi Cron

Ada dua jenis file konfigurasi Cron:

Crontab Sistem UNIX/Linux

Ini membutuhkan hak akses root karena biasanya digunakan untuk layanan sistem dan pekerjaan penting. Bidang keenam (dalam deskripsi sintaks di atas) adalah nama pengguna untuk menjalankan perintah sebagai. Ini memberikan kemampuan kepada sistem crontab untuk menjalankan perintah sebagai pengguna mana pun.

Pengguna Crontab

Seorang pengguna juga dapat menginstal pekerjaan cron mereka sendiri menggunakan perintah crontab. Di sini juga, bidang keenam (dalam deskripsi sintaks di atas) adalah perintah untuk dijalankan, dan semua perintah dijalankan sebagai pengguna yang membuat crontab. Setiap pengguna dapat memiliki file crontab mereka sendiri, dan meskipun ini adalah file di /var/spool/cron/ crontabs, mereka tidak dimaksudkan untuk diedit secara langsung. Kita perlu menggunakan perintah crontab untuk mengedit atau mengatur pekerjaan cron kita sendiri.

Bagaimana cara kerjanya?

Layanan cron (daemon) berjalan di latar belakang dan terus-menerus memeriksa (setiap menit) file /etc/crontab , dan direktori /etc/cron.*/ . Itu juga memeriksa direktori /var/spool/cron/ . Perintah dijalankan oleh cron ketika bidang menit, jam, dan bulan cocok dengan waktu saat ini, dan setidaknya satu dari bidang dua hari (hari dalam sebulan, atau hari dalam seminggu) cocok dengan hari ini.

Perintah Dasar

Mencantumkan Pekerjaan Cron yang Ada

Kami dapat membuat daftar semua pekerjaan Cron tanpa membuka file konfigurasi crontab menggunakan perintah di bawah ini:

 crontab -l

Jika tidak ada pekerjaan yang ada, itu akan mengembalikan output sebagai

 [geekflare@localhost ~]# crontab -l no crontab for geekflare [geekflare@localhost ~]#

Jika pengguna telah menambahkan beberapa pekerjaan maka akan ditampilkan sebagai berikut.

 [geekflare@localhost ~]# crontab -l # Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined through a single line # indicating with different fields when the task will be run # and what command to run for the task # # To define the time you can provide concrete values for # minute (m), hour (h), day of month (dom), month (mon), # and day of week (dow) or use '*' in these fields (for 'any').# # Notice that tasks will be started based on the cron's system # daemon's notion of time and timezones. # # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 am every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # For more information see the manual pages of crontab(5) and cron(8) # # mh dom mon dow command 0 */1 * * * /home/account/scripts/updateAccountStatuses.sh 0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh [geekflare@localhost ~]#

Tabel cron bersifat khusus untuk pengguna, yang berarti, Anda harus masuk dengan pengguna tertentu untuk melihat daftar tabel cron.

Daftar Cron untuk Pengguna tertentu

Untuk membuat daftar pekerjaan terjadwal dari pengguna lain, gunakan opsi sebagai -u ( Pengguna ) dan -l ( Daftar ).

crontab -u another_username -l

Contoh : crontab -u geekflare -l

Tambahkan/Ubah Entri Crontab

Untuk mengedit entri crontab, kita dapat menggunakan opsi -e seperti yang ditunjukkan di bawah ini.

crontab -e

Perintah di atas akan membuka editor vi di mana Anda menentukan detail pekerjaan dan menyimpan file. Setelah disimpan, Anda dapat memverifikasi apakah cron dikonfigurasi atau tidak dengan crontab -l .

Tambahkan/Ubah Entri Crontab untuk Pengguna Tertentu

Kita dapat mengedit crontab untuk pengguna lain menggunakan perintah di bawah ini

 crontab -u another_username -e

Contoh : crontab -u geekflare -e

Hapus Entri Crontab

Gunakan parameter <strong>-r</strong> dengan Crontab untuk menghapus tugas terjadwal yang selesai tanpa konfirmasi dari crontab

crontab -r

Jika Anda ingin konfirmasi sebelum menghapus pekerjaan terjadwal, gunakan opsi <strong>-i</strong> dengan -r , yang akan meminta konfirmasi dari pengguna sebelum menghapus crontab pengguna.

 crontab -i -r
 [geekflare@localhost ~]# crontab -i -r crontab: really delete geekflare's crontab?

String Khusus Crontab

Selain sintaks di atas yang telah kita bahas, kita juga dapat menggunakan delapan string khusus yang disediakan oleh Crontab. Ini tidak hanya akan menghemat waktu kita tetapi juga akan meningkatkan keterbacaan.

Senar Khusus Keterangan
@reboot Jalankan sekali, setelah startup.
@yearly Jalankan setahun sekali, yaitu 0 0 1 1 *
@annually Sama seperti @yearly
@monthly Jalankan sebulan sekali yaitu 0 0 1 * *
@weekly Jalankan seminggu sekali yaitu, 0 0 * * 0
@daily Jalankan sekali sehari yaitu 0 0 * * *
@midnight Sama seperti @daily
@hourly Jalankan satu jam sekali yaitu, 0 * * * *

Contoh String Khusus Crontab

1. Crontab untuk menjadwalkan tugas setiap tahun

@yearly /scripts/greeting.sh

Kita dapat mengeksekusi di atas untuk mengirim ucapan tahun baru, Ini akan dieksekusi pada menit pertama setiap tahun.

2. Crontab untuk menjadwalkan tugas yang akan dieksekusi setiap bulan.

@monthly /scripts/cleanup.sh

Hal di atas bisa kita lakukan untuk melakukan beberapa kegiatan bersih-bersih setiap awal bulan.

Demikian pula, kita dapat menggunakan string khusus Crontab lainnya untuk tujuan mingguan, harian, dan jam.

Direktori Cron

Administrator sistem dapat menggunakan jadwal cron seluruh sistem yang berada di bawah direktori cron yang telah ditentukan sebelumnya seperti yang ditunjukkan di bawah ini

  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly
  • /etc/cron.weekly

Contoh Waktu Nyata Crontab

Mari kita bahas beberapa contoh real-time, yang biasanya digunakan oleh administrator sistem atau profesional TI.

Hapus file dan direktori kosong

45 0 * * * geekflare find /tmp -type f -empty -delete

Ekspresi cron di atas akan menemukan file dan direktori kosong dari direktori /tmp dan akan menghapusnya. Pekerjaan ini akan berjalan pada 12.45 setiap hari. Kita perlu menyebutkan nama pengguna untuk melakukan pekerjaan ini. Dalam contoh di atas, pengguna geekflare sedang melakukan operasi cron job.

Jalankan banyak tugas menggunakan satu cron

* * * * * /home/scripts/backup.sh; /home/scripts/scritp.sh

Beberapa tugas/pekerjaan dapat dipisahkan menggunakan titik koma ( ; ) dan dapat ditetapkan ke ekspresi cron tunggal.

Alat pemformatan & pengujian Cron

Sejauh ini kita telah membahas perintah dan sintaks crontab untuk menjadwalkan tugas. Tetapi bagaimana jika Anda bukan administrator sistem dan tugas Anda bukan untuk mengatur Cron secara teratur, mungkin tidak mungkin untuk mengingat sintaks dan membuka ruang untuk kesalahan. Jangan khawatir kami punya solusi untuk masalah ini.

Ada beberapa alat pemformatan Cron yang tersedia online.

# 1. Generator Pekerjaan Cron

Cron Job Generator adalah GUI yang sangat mudah digunakan di mana Anda dapat menentukan menit, hari, dan jalur skrip untuk menghasilkan crontab.

Mari kita ambil contoh waktu nyata di mana saya harus menjalankan /home/processMonitor.sh setiap 5 menit antara Senin hingga Jumat.

Jadi, saya mendapatkan sintaks Cron di bawah ini yang dapat saya masukkan ke dalam crontab saya dengan menjalankan

crontab –e
0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh

# 2. Easycron

Easycron adalah penjadwal pekerjaan cron berbasis web yang berguna. Kita dapat membuat tugas cron dengan menentukan URL untuk dipanggil , kita dapat mengatur waktu kapan harus dieksekusi. Kami juga dapat menentukan ekspresi cron atau menambahkannya secara manual dari formulir deskriptif. Yang penting, kami secara opsional dapat menggunakan otentikasi HTTP dasar untuk lapisan keamanan kecil.

Tidak hanya itu, Easycron juga dapat digunakan untuk mencapai tujuan lain seperti ekspresi Cron Standar, Log Eksekusi Pekerjaan Cron, Pemberitahuan Email, Log Kegagalan Terpisah, dll.

# 3. Generator Crontab

Crontab Generator adalah alat lain yang berguna untuk menghasilkan crontab dan dengan alat ini, Anda juga dapat menambahkan jika Anda ingin menyimpan output cron ke file atau mengirimkannya ke email.

# 4. Crontab Guru

Crontab Guru adalah editor ekspresi jadwal cron online sederhana. Selain itu, ini menyediakan sarana yang berguna untuk memantau cronjob Anda. Yang perlu kita lakukan adalah menyalin perintah yang disediakan dan menambahkan di akhir definisi crontab. Jika tugas cron gagal atau bahkan tidak dimulai, Anda akan menerima email peringatan.

Pada contoh di bawah ini, Job akan dieksekusi pada 04:05 , setiap hari, setiap bulan dan setiap minggu.

# 5. Penguji CRON

CRON Tester memungkinkan kita untuk menguji definisi waktu/tanggal cron. Mungkin ada situasi di mana kita harus memecahkan kode sintaks cron yang ada untuk pemecahan masalah atau hanya ingin melakukan tes.

Untuk melakukannya, kita dapat menggunakan alat ini. Yang perlu kita lakukan adalah menyalin dan menempelkan ekspresi cron kita di bidang definisi cron, lalu pilih jumlah iterasi dan klik Uji untuk melihat berbagai tanggal di mana ia akan dijalankan.

Mari kita periksa salah satu ekspresi cron kita 4 3 */2 * * yang harus dijalankan pada 03:04(AM) setiap dua hari. Mari kita verifikasi dengan cron tester.

Kesimpulan

Saya harap hal di atas membantu Anda untuk mendapatkan pemahaman yang lebih baik tentang Crontab dan mengatur pekerjaan cron. Menjadwalkan pekerjaan melalui Cron adalah salah satu dari banyak tugas yang dilakukan oleh Admin Linux. Jika Anda tertarik untuk mempelajari keterampilan lanjutan, lihat kursus ini.