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.

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

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.