Jalankan pekerjaan cron setiap 5 menit antara dua kali

18

Apakah ada cara untuk menentukan pekerjaan yang berjalan setiap 5 menit antara waktu mulai dan waktu akhir pada hari kerja di crontab?

Pembaruan Saya pikir itu relevan bahwa waktu mulai dan berakhir saya tidak pada jam putaran. Jadi, menentukan 9-5 di kolom jam tidak cukup. Saya ingin 9: 30-17: 30.

metafora pythonic
sumber

Jawaban:

24

Anda harus melakukannya sedikit demi sedikit:

30-59/5 9 * * * script.sh
*/5 10-16 * * * script.sh
0-30/5 17 * * * script.sh
Ignacio Vazquez-Abrams
sumber
1

Jika jawaban Ignacio Vazquez-Abrams tidak benar-benar bekerja untuk Anda, misalnya karena skrip membutuhkan sejumlah besar parameter atau kriteria doa tidak trivial (atau tidak terikat waktu), maka pendekatan alternatif adalah membuat sederhana skrip wrapper, panggil skrip wrapper secara berkala, dan minta skrip wrapper memeriksa waktu saat ini dan aktifkan skrip utama.

Sebagai contoh:

#/bin/bash

# Check to see if we should run the script now.
HOUR=$(date +%H)
MINUTE=$(date +%M)
if test $HOUR -lt 9; then exit 0; fi
if test $HOUR -eq 9 -a $MINUTE -lt 30; then exit 0; fi
if test $HOUR -eq 17 -a $MINUTE -gt 30; then exit 0; fi
if test $HOUR -gt 17; then exit 0; fi

# All checks passed; we should run the script now.
exec script.sh ... long list of parameters ...

Hal ini memungkinkan pengkodean kriteria eksekusi yang lebih kompleks daripada sintaks cron yang dengan mudah memungkinkan, dengan biaya yang relatif kecil untuk memohon shell dan skrip terpisah secara teratur.

sebuah CVn
sumber