====== Cronjob to schedule specific recurring days ======
If you want to run schedule for a certain recurring time such as the 1st Saturday of the month, etc then cron does not have the facility to do that. However the underlying job can have a filter to only trigger for those specific conditions. I have two conditions listed below and the script to go with them.
===== Setup cron for 1st, 3rd and 5th weekends =====
This script will send a message to my phone Each **Friday** evening at **5:01 pm** on the **odd weekends** to my cell phone.
==== Cron Entry ====
01 17 * * 5 /home/xxxxxx/reminder/rem1.bash
==== rem1.bash script ====
#!/bin/bash
# Script to send notification to phone on 1st, 2nd, 3rd Week (Friday as defined in cron)
# Get the date number (1-31)
TODAYDATE=$(date +%d)
# Subtract 1 so 0-6 is 1st week and so on
DATEM1=$(($TODAYDATE - 1))
# Divide by 7 to get the Week # from 0 to 4 (5 weeks)
WEEKNUM=$(($DATEM1 / 7))
# Divide by 2 to get odd/even week
EVENWEEK=$(($WEEKNUM % 2))
#echo "$TODAYDATE - $EVENWEEK"
#
# If Odd week then Send Notification
if [ "$EVENWEEK" = "0" ]; then
echo "Odd Friday ..." | /usr/bin/mailx -s "Message here" "4445556666@mobile.mycingular.com"
fi
#
exit
===== Setup cron for 1st Saturday =====
This script will send a message to my phone Each **Saturday** morning at **8:14 am** on the **1st (Sat) weekend** to my cell phone.
==== Cron Entry ====
14 08 * * 6 /home/xxxxxx/reminder/rem2.bash
==== rem2.bash script ====
#!/bin/bash
# Script to send notification the 1st sat
# Get the date number (1-31)
TODAYDATE=$(date +%d)
# Subtract 1 so 0-6 is 1st week and so on
DATEM1=$(($TODAYDATE - 1))
# Divide by 7 to get the Week # from 0 to 4 (5 weeks)
WEEKNUM=$(($DATEM1 / 7))
# If 1st week then Send Notification
if [ "$WEEKNUM" = "0" ]; then
echo "1st Sat" | /usr/bin/mailx -s "message" "4445556666@mobile.mycingular.com"
fi
#
exit
===== Other considerations =====
For the 1st Saturday weekend my initial "reaction" was to just do a crontab such as this:
14 08 1-7 * 6 /home/xxxxxx/reminder/rem2.bash
However cron interprets this as trigger on days 1-7 **plus** Saturdays! So that won't quite work.
This has been very helpful to do notification for odd, even weekends, specific week such as 1st, 2nd, 3rd, 4th or 5th weekends and specific day of a specific weekend such as 1st Saturday, 3rd Thursday, etc.