Você não diz qual versão do CRON está usando, mas da minha experiência limitada, geralmente, a Configuração do CRON é -
Minuto Dia Mês Dia-da-semana seguido pelo seu comando para executar
assim, no primeiro dia do mês, isso seria 0 0 1 * * não iniciando 0 0 18
Uma solução é que você pode usar a sintaxe do caso bash ... declaração esac
0 0 1,2,3 * * case 'date "+\%w\%d"' in \[1-5]\01|\1\02|\1\03) /path/to/your/script ;; esac
A entrada cron é então verificada em relação ao valor "case word in" da expressão até que uma correspondência seja encontrada. Se nada corresponder, a condição padrão será usada.
Bash Formato básico de data $ date “+ Onde Parâmetro da lista abaixo e separador é qualquer separador de campo como hífen (-), barra, dois pontos: e é opcional.
Exemplos de formato de data de bash % d é palavra-chave para uma data de dois dígitos % w dia da semana a partir de domingo (0), ou seja, smtwtfs (nota domingo pode ser 0 e 7).
Aqui, a palavra string é comparada com todos os padrões até que uma correspondência seja encontrada. A (s) instrução (ões) que seguem o padrão correspondente é executada. Se nenhuma correspondência for encontrada, a instrução case sairá sem executar nenhuma ação.
Quando a (s) instrução (ões) executa (s), o comando ;; indica que o fluxo deve pular para o final da declaração de caso inteira.
então se a data for 01 de segunda a sexta ou (dia 1) segunda é a data 02 ou 03 do mês, então execute seu script às 00:00 hrs, caso contrário não faça nada
ou para o fim de semana
0 0 1 * * case 'date "+\%w\%d"' in \0\01|\6\01|\6\02|\6\03|\6\04|\6\05|\6\06|\6\07) /path/to/your/script ;; esac
Caso contrário, mas nem todos os CRON funcionam da mesma forma, você também pode tentar as seguintes opções.
Para todos os sábados ou domingos, se for o 1º ao sétimo
0 0 1-7 * 6,7
0 0 1-7 * SAT,SUN
Primeiro dia da semana do mês
0 0 1W * *
Primeiro sábado ou domingo, se for do 1º ao 7º
0 0 1-7 * 6#1,7#1
0 0 1-7 * SAT#1,SUN#1