Вы не можете определить такие логики c в cron
, и обычный способ - добавить их в скрипт, который вы хотите запустить. Так что запускайте скрипт каждый день так:
0 0 * * * /path/to/script.sh
и добавляйте внутрь
if [ "$(date +%d%m)" == "0101" ]
then rm -f /var/run/flag
fi
if [ $(date +%d) -ge 12 ] && [ $(date +%w) -gt 0 ] && [ $(date +%w) -lt 6 ] && [ ! -f /var/run/flag ]
then <do the work>
touch /var/run/flag
fi
exit
Также вам следует позаботиться о запуске только один раз (насколько я понимаю)