![Cron Dicas para não executar cron jobs em feriados (segunda-feira de um fim de semana de três dias)](https://rvso.com/image/1263747/Cron%20Dicas%20para%20n%C3%A3o%20executar%20cron%20jobs%20em%20feriados%20(segunda-feira%20de%20um%20fim%20de%20semana%20de%20tr%C3%AAs%20dias).png)
Temos cerca de cem máquinas configuradas, com cada máquina executando tarefas cron, como iniciar e interromper serviços e arquivar os arquivos de log desses serviços no final do dia em um repositório centralizado.
Uma dor de cabeça que temos é o fim de semana de três dias (fechamos nos feriados). Não queremos que os serviços sejam iniciados nesses dias e conectados às máquinas dos nossos parceiros de negócios.
Atualmente fazemos isso comentando manualmente os trabalhos mais críticos e deixando que vários erros aconteçam o dia todo. Não é ideal.
Basicamente, se um trabalho tiver '1-5' definido no campo do dia, queremos que isso signifique 'dias úteis' e não de segunda a sexta-feira. Temos um banco de dados que monitora quais dias são de fato 'dias úteis'
Então, é possível substituir o algoritmo de correspondência de dia do Cron ou existe alguma outra maneira de definir facilmente uma configuração do cron para evitar que as coisas sejam iniciadas em um feriado de segunda-feira?
Obrigado!
Responder1
Cron não apóia esse tipo de determinação. Fica muito complicado muito rápido. Aqui no Canadá, os feriados nem sequer são consistentes entre as províncias.
Eu escreveria um script de execução que verifica um banco de dados de feriados e sai se for feriado. Tente algo como:
#!/bin/bash HOJE=$(data +%Y%m%d) if grep -q $TODAY /etc/feriados; então echo Pular férias por $* saída 0 fi $*
Responder2
Posso imaginar algumas maneiras de fazer isso, mas a solução mais prática dependerá da configuração exata de todos os cron jobs. Por exemplo:
Se o banco de dados de dias úteis puder ser interrogado por meio de um script, você poderá executar um cron job no domingo que determina se o dia seguinte (segunda-feira) é um dia útil ou não e define/limpa um arquivo em algum lugar. Todos os cron jobs podem procurar a presença deste arquivo e optar por executar ou sair de acordo.
OU
Você pode substituir todas as entradas individuais do cron por um trabalho mestre que só dispara todos os outros se o banco de dados (verificável) disser que é um dia útil.