
Eu tenho um bom entendimento de como o cron/anacron funciona no Linux. Minha pergunta é esta:
- o anacron é executado no login e verifica se já se passou mais de um dia desde que os scripts foram
/etc/cron.daily
executados - anacron executa scripts
/etc/cron.daily
e atualiza o carimbo de data/hora em/var/spool/anacron/cron.daily
- saídas de anacron
- computador fica ligado por mais de 24 horas
- cron é executado e detecta uma correspondência de horário para cron.daily
- cron não faz nada desde então
test -x anacrontab" == True
Se meu computador funcionar por mais de 24 horas, como o cron executa os scripts em cron.daily (esta é uma distribuição baseada em Debian)?
o padrão /etc/crontab
(que é executado a cada minuto) testa a presença (ou mais precisamente, o bit -x) de /usr/bin/anacron
e ignora a /etc/cron.daily
pasta se a encontrar, mas não parece reiniciar o anacron para fazer o trabalho.
EDITAR:
Portanto, o cron inicia o anacron a partir da /etc/cron.d
pasta, mas apenas se o computador estiver ligado e conectado às 7h30 todos os dias. Depois de fazer uma pequena planilha de kung-fu, cheguei à conclusão de que os scripts /etc/cron.daily
serão executados em qualquer lugar entre 1 minuto e 31,5 horas de intervalo.
Ex:
Cenário 1:
- faça login às 23h59 do dia 23/05/2021
- assumindo que o carimbo de data/hora do anacron
/etc/cron.daily
é anterior a 23/05/2021, o anacron executa todos os scripts/etc/cron.daily
e atualiza o carimbo de data/hora para 23/05/2021 - sair
- faça login novamente às 12h do dia 24/05/2021
- anacron vê que a última execução foi 23/05/2021, e agora é 24/05/2021, então anacron executa todos os scripts em
/etc/cron.daily
- tempo decorrido entre execuções: 1 minuto
Cenário 2:
- faça login às 12h do dia 23/05/2021
- assumindo que o carimbo de data/hora do anacron
/etc/cron.daily
é anterior a 23/05/2021, o anacron executa todos os scripts/etc/cron.daily
e atualiza o carimbo de data/hora para 23/05/2021 - o computador permanece ligado e conectado até 7h30 do dia 23/05/2021
- cron executa o anacron a partir de seu arquivo crontab em
/etc/cron.d
- como o carimbo de data/hora é 23/05/2021, nada acontece
- o computador permanece ligado e conectado até 7h30 do dia 24/05/2021
- cron executa o anacron a partir de seu arquivo crontab em
/etc/cron.d
- anacron vê que a última execução foi 23/05/2021, e agora é 24/05/2021, então anacron executa todos os scripts em
/etc/cron.daily
- tempo decorrido entre execuções: 31,5 horas
Responder1
Todos os arquivos do sistema /etc/cron.daily
, /etc/cron.weekly
etc. incluem uma entrada para execuçãoanacronque por sua vez inclui uma entrada para executarcron. /etc/crontab
inclui entradas parapeças de execuçãopara queanacroné executado porpeças de execuçãoou pelacron.
Outro arquivo a considerar é /etc/anacrontab
o que pode substituir alguns dos efeitos do/etc/crontab
Um sistema importantecronarquivo relacionado é /etc/cron.daily/logrotate
um script usado para iniciar o processamento de rotação de log.
Usuário comumcrontabssão executados independentemente dos cronjobs do sistema.
Observe que /etc/crontab
não é executado a cada minuto - a atividade é determinada pelas várias especificações do crontab.