Si no desea que cron ejecute su trabajo todos los días o todos los domingos, puede escribir un contenedor que ejecute su código, determinar el próximo primer domingo y programarse para ejecutarse en esa fecha.
Luego programe esa envoltura para el próximo primer domingo del mes. Después de eso manejará todo por sí mismo.
El código sería algo así como (énfasis en algo ... hay chequeos de errores se hace):
#! /bin/bash
#We run your code first
/path/to/your/code
#now we find the next day we want to run
nskip=28 #the number of days we want to check into the future
curr_month=`date +"%m"`
new_month=`date --date='$nskip days' +"%m"`
if [[ curr_month = new_month ]]
then
((nskip+=7))
fi
date=`date --date='$nskip days' +"09:00AM %D` #you may need to change the format if you use another scheduler
#schedule the job using "at"
at -m $date < /path/to/wrapper/code
La lógica es simple para encontrar el siguiente primer domingo. Dado que comenzamos el primer domingo del mes actual, agregar 28 nos pondrá el último domingo del mes actual o el primer domingo del mes siguiente. Si es el mes actual, aumentamos hasta el próximo domingo (que será la primera semana del mes siguiente).
Y utilicé "at". No sé si eso es hacer trampa. La idea principal es encontrar el próximo primer domingo. Puede sustituir el programador que desee después de eso, ya que sabe la fecha y la hora en que desea ejecutar el trabajo (sin embargo, un planificador diferente puede necesitar una sintaxis diferente para la fecha).
Es posible obtener resultados publicar esta pregunta en serverfault.com. –