Eu tenho uma instalação cron para executar um script bash diariamente às 22:00. Eu tenho outra instalação do cron para executar mensalmente no dia 1º do mês. Ambos os crons iniciam um script bash, e o único diferente no script bash é o argumento que eles passam para o programa java subjacente (emulando o lançamento da linha de comando do programa java).
O problema é que, de alguma forma, preciso desativar o cron diário no primeiro dia do mês para que ambos não tentem executar no mesmo dia. Isso é possível fazer automaticamente?
Suponho que posso criar outro script bash para editar o cron antes do 1º e depois novamente para restaurar as coisas, mas isso parece ... imundo.
shell-script
cron
SnakeDoc
fonte
fonte
Respostas:
De maneira semelhante à solução proposta por @StephaneChazelas nos comentários, você pode especificar o intervalo de dias no terceiro campo como um intervalo para o cron no qual você deseja executar todos os dias, além do 1º do mês.
As duas entradas a seguir realizariam o que você procura:
fonte
A maneira mais fácil de lidar com isso é apenas ter uma entrada no cron. Modifique o script bash para verificar a data - se for o 1º do mês, chame o programa java com parâmetros mensais, caso contrário, chame o programa com os parâmetros diários.
Alterar o script simplifica o processo, pois o script como documento descreverá melhor o que está acontecendo sem exigir informações adicionais em uma tabela cron.
Os mods de script podem se parecer com isso:
fonte
Eu acho que usando comparação inteira se mais correto
date '+% d' retorna 01 e não 1, portanto, a comparação de string == será falsa
em vez de
fonte