Scheduling Recurring System Jobs
Published: 2024-03-26 14:02:40

**Sistem Pekerjaan Terjadwal**

Administrator sistem biasanya perlu menjalankan pekerjaan berulang. Praktik terbaik adalah menjalankan pekerjaan ini dari akun sistem alih-alih dari akun pengguna. Artinya, jangan jadwalkan untuk menjalankan pekerjaan ini menggunakan perintah crontab, melainkan gunakan file crontab seluruh sistem. Entri pekerjaan dalam file crontab seluruh sistem mirip dengan entri crontab pengguna, kecuali file crontab seluruh sistem memiliki bidang tambahan sebelum bidang perintah; pengguna di bawah wewenang siapa perintah harus dijalankan.

**Lokasi File Crontab**

Pekerjaan sistem berulang didefinisikan di dua lokasi: file /etc/crontab, dan file di dalam direktori /etc/cron.d/. Anda harus selalu membuat file crontab kustom di bawah direktori /etc/cron.d/ untuk menjadwalkan pekerjaan sistem berulang. Tempatkan file crontab kustom di /etc/cron.d untuk melindunginya dari tertimpa jika ada pembaruan paket ke penyedia /etc/crontab, yang dapat menimpa konten yang ada di /etc/crontab. Paket yang memerlukan pekerjaan sistem berulang menempatkan file crontab mereka di /etc/cron.d/ yang berisi entri pekerjaan. Administrator juga menggunakan lokasi ini untuk mengelompokkan pekerjaan terkait ke dalam satu file.

**Direktori Repositori Cron**

Sistem crontab juga mencakup repositori untuk skrip yang perlu dijalankan setiap jam, hari, minggu, dan bulan. Repositori ini adalah direktori yang disebut /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, dan /etc/cron.monthly/. Sekali lagi, direktori ini berisi skrip shell yang dapat dijalankan, bukan file crontab.

**Perintah run-parts**

Perintah yang disebut run-parts yang dipanggil dari file /etc/cron.d/0hourly menjalankan skrip /etc/cron.hourly/*. Perintah run-parts juga menjalankan pekerjaan harian, mingguan, dan bulanan, tetapi dipanggil dari file konfigurasi berbeda yang disebut /etc/anacrontab.

**File /etc/anacrontab**

Tujuan dari /etc/anacrontab adalah untuk memastikan bahwa pekerjaan penting selalu berjalan, dan tidak terlewat secara tidak sengaja karena sistem dimatikan atau sedang hibernasi ketika pekerjaan seharusnya dijalankan. Misalnya, jika pekerjaan sistem yang berjalan setiap hari tidak dijalankan terakhir kali karena sistem sedang reboot, pekerjaan tersebut dijalankan ketika sistem menjadi siap. Namun, mungkin ada penundaan beberapa menit dalam memulai pekerjaan tergantung pada nilai parameter Delay in minutes yang ditentukan untuk pekerjaan di /etc/anacrontab.

**Pengenalan systemd Timer**

Dengan munculnya systemd di Red Hat Enterprise Linux 7, fungsi penjadwalan baru sekarang tersedia: unit timer systemd. Unit timer systemd mengaktifkan unit lain dari jenis berbeda (seperti layanan) yang nama unitnya cocok dengan nama unit timer. Unit timer memungkinkan aktivasi berbasis timer dari unit lain. Untuk debugging yang lebih mudah, systemd mencatat peristiwa timer dalam jurnal sistem.

**Contoh Unit Timer**

Paket sysstat menyediakan unit timer systemd yang disebut sysstat-collect.timer untuk mengumpulkan statistik sistem setiap 10 menit. Output berikut menunjukkan baris konfigurasi /usr/lib/systemd/system/sysstat-collect.timer.

[Unit]
Description=Run system activity accounting tool every 10 minutes

[Timer]
OnCalendar=*:00/10

[Install]
WantedBy=sysstat.service

Parameter OnCalendar=*:00/10 menunjukkan bahwa unit timer ini mengaktifkan unit terkait (sysstat-collect.service) setiap 10 menit. Namun, Anda dapat menentukan interval waktu yang lebih kompleks.