Em que casos o anacron não será executado?

0

Estou tentando entender como o anacron funciona (no Fedora). Eu tenho três perguntas relacionadas. Estou confuso devido à seguinte declaração do manual do anacrontab :

The START_HOURS_RANGE variable defines an interval (in hours) when scheduled jobs can be run. In case this time interval is missed, for example, due to a power down, then scheduled jobs are not executed that day.

A primeira pergunta principal é: o que significa a frase "intervalo de tempo perdido"?

Estou ciente de que há clock de software e relógio de hardware, e que o relógio do software depende do relógio do hardware . Pelo que entendi, se a energia é longa o suficiente, em seguida, após a inicialização do sistema, o relógio do hardware tem que ser ajustado a partir do relógio do software, portanto, o software relógio tem que ser ajustado independentemente (manual ou automaticamente).

Então, vem a segunda pergunta: significa que se o anacron deveria ter sido executado no tempo em que o sistema estava inativo, e após a inicialização - no tempo que o anacron estava rodando - ele ainda não estava tendo tempo, então anacron estava pensando que ainda não é a hora de correr (e, portanto, não será executado)?

Eu percebo que o anacron não é um daemon em si, como declarado em esta resposta do stackexchange . Como a documentação do Fedora no anacron , as tarefas anacron são executadas pelo daemon crond . Além disso, afirma que as tarefas do anacron serão executadas assim que o sistema estiver ativo.

Então, vem a terceira pergunta: Se a resposta para a segunda pergunta for "sim", a hora do sistema pode ser ajustada antes de crond executar anacron e, portanto, o anacron funcionará? a hora estará correta)?

UPDATE

Talvez tenhamos um exemplo: vamos supor que eu tenha agendado um anacron no Fedora para rodar alguns trabalhos diariamente - e o sistema normalmente está rodando o tempo todo. Deixei a configuração padrão que o Fedora fornece, isto é, o anacron executará somente dentro do intervalo de tempo 3:05 e 22:50 (espero que entenda corretamente o que o manual diz) - se, claro, o sistema estará funcionando neste intervalo de tempo. Agora, vamos supor que houve um desligamento das 2:30 às 4:30, então o Fedora começou a inicializar às 4:30. Vamos supor que o crocodilo corra anacron dois minutos depois (4:32), como de costume, e vamos supor que naquele tempo o relógio do sistema ainda não estava configurado corretamente. Anacron vê que o relógio do sistema está configurado para 2:32, então ele acha que "ainda não é hora de executar meus trabalhos, porque estou programado para executá-los às 3:05 mais cedo".

A partir disso, eu entendo que não é executado naquele dia (e a próxima vez que será executado é no dia seguinte, a partir de 3:05).

E agora o outro caso: vamos supor que a hora do sistema foi ajustada em 2:31, um minuto antes de crond rodar anacron. Quando corre anacron às 4:32 (agora, a hora certa), anacron vê a hora e pensa "OK, então eu tenho que executar meus trabalhos. Vamos esperar o atraso aleatório que é definido na minha configuração e executar os trabalhos ". Aguarda um atraso aleatório entre <4:43 4:37 e 5:17 5:22 e depois disso ele executa seus trabalhos.

Estou certo?

    
por silv 16.10.2018 / 04:09

1 resposta

1

Responda suas perguntas em sequência:

  1. O intervalo será perdido se anacron não for invocado durante o mesmo. Não seria invocado se não estivesse programado ou se a máquina não estivesse em execução no momento em que seria invocada. Isso tem menos a ver com clocks e mais a respeito se cron foi executado para executar anacron ou não.

  2. Quando cron (ou um administrador) chama anacron , ele executará cada trabalho agendado, se necessário, ou seja, se o trabalho foi executado pela última vez mais do que o número de dias especificado no arquivo anacrontab . Se anacron não for chamado, ele não executará nenhum trabalho agendado. Se anacron é executado na inicialização do sistema depende da configuração local.

  3. Se anacron for chamado, por exemplo, por meio de um trabalho cron , ele analisará a hora atual do sistema e comparará isso com seus arquivos de estado salvos para cada trabalho. Se essa diferença de horário for maior do que o arquivo de configuração anacrontab especifica para um trabalho, anacron executará esse trabalho.

Todas as três respostas são essencialmente as mesmas. anacron executará um trabalho a partir de seu anacrontab se as condições estiverem corretas (o trabalho não foi executado por um determinado período de tempo). anacron é geralmente iniciado por um trabalho cron . Isso pode ser um trabalho que é executado na inicialização do sistema e a cada meia-noite ou em outro horário (provavelmente uma vez por dia). Os Linuxes que usam systemd podem invocar anacron de forma diferente. Se anacron não for executado, obviamente não fará nada.

Se o relógio do sistema não estiver configurado corretamente, isso poderá influenciar se um trabalho será executado ou não, dependendo de quanto o relógio está errado no momento da execução de anacron e quando o trabalho foi executado pela última vez.

    
por 16.10.2018 / 09:01