Execute determinado script periodicamente no momento da inicialização

1

Suponha que o computador esteja sendo lançado de forma irregular. E quero executar um determinado script no momento da inicialização uma vez por mês. Mas não consigo configurar uma tarefa do cron porque não sei se a máquina será inicializada nesta data.

Eu pensei sobre essa abordagem.

  • Eu crio um arquivo com a data e hora da execução do script.
  • A cada inicialização eu faço o seguinte:
if(file_exists("last_boot.txt"))
{
    if(<<more then a month has passed since last date time>>)
    {
        <<run script>>
    }
}
else
{
    <<run script>>
}

<<write current date time into the file>>

É possível fazer isso usando algumas ferramentas padrão sem o truque com o arquivo?

    
por user4035 13.12.2015 / 18:45

1 resposta

2

Basta executá-lo em qualquer horário usando o cron e verifique a parte outro do cronograma no script:

Um caminho:

@reboot /path/to/my_script.sh

if has_run_this_month() {
    exit
}

Outra maneira:

0 0 1 * * /path/to/my_script.sh

if has_run_since_reboot() {
    exit
}

* Existem vários problemas com esta forma de executar as coisas:

  • Você sempre mantém uma máquina funcionando por mais de um mês? Dois meses? O que acontece em ambos os casos?
  • Você já deixou a máquina fora por mais de um mês? Você pode ver para onde isso está indo ...
  • Como você garante que o caminho onde você persiste o estado (porque você tem para armazená-lo em algum lugar persistente) não seja apagado na inicialização porque é um disco RAM?
por 13.12.2015 / 19:04

Tags