Saya perlu menemukan cara untuk mencatat suatu pekerjaan sehingga dapat berjalan setiap hari Rabu dalam sebulan. Apakah ini mungkin?
Saya perlu menemukan cara untuk mencatat suatu pekerjaan sehingga dapat berjalan setiap hari Rabu dalam sebulan. Apakah ini mungkin?
Jawaban:
Halaman manual saya untuk crontab (yang sayangnya saya tidak dapat temukan online) memberikan contoh berikut:
# Run on every second Saturday of the month
0 4 8-14 * * test $(date +\%u) -eq 6 && echo "2nd Saturday"
Menyesuaikan ini dengan tujuan Anda ...
0 4 8-14 * * test $(date +\%u) -eq 3 && job.sh
*), perintah akan berjalan ketika salah satu cocok .
date +\%u
Anda dapat menghindari menjalankan skrip eksternal dengan menggunakan kombinasi trik hari dalam seminggu ditambah hari kerja:
# Run on every second Wednesday of the month
0 4 8-14 * Wed job.sh
Ini juga menghindari menjalankan program eksternal lain. 8-14 memilih semua hari yang cocok dengan minggu kedua bulan itu. Kemudian itu disaring hanya pada hari Rabu itu.
Tidak mungkin menggunakan cron sendiri, tetapi Anda dapat memanggil skrip seminggu sekali yang melakukan pengujian:
Di crontab, jalankan second_wed.sh pukul 12.00 setiap hari Rabu:
0 12 * * 3 /home/you/bin/second_wed.sh
Di second_wed.sh:
#!/usr/bin/env bash
day_of_month=`date +"%
if [ $day_of_month -gt 7 -a $day_of_month -lt 15 ]; then
# Call your program here instead of 'ls'…
ls
fi
Untuk server CentOS 7, sepertinya ini adalah sintaks yang berfungsi untuk saya. Harap perhatikan ruang di sekitar [dan ]. Butuh beberapa saat bagi saya untuk mencari tahu.
Ini menjalankan test.shfile pada 13:07 / 1:07 PM pada hari Rabu kedua bulan itu. (0 = Minggu, 1 = Senin, 2 = Selasa, 3 = Rabu, dll.)
07 13 8-14 * * [ `date +\%u` = 3 ] && /root/scripts/test.sh
Kebakaran pada pukul 10:15 pada hari Jumat ketiga setiap bulan: 0 15 10 ? * 6#3
Sumber: https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm