Table of Contents

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.