Utilitário Unix para executar um comando após um período específico decorrido?

1

Estou procurando um daemon que execute um comando uma vez por semana. Mas não estou procurando algo como o cron que executará um comando em um horário específico. Como o meu laptop está muito desligado, acontece muito que esse comando não seja executado, porque simplesmente perde o momento em que o cron executa esse comando.

Portanto, estou procurando um daemon que eu possa dizer para executar um comando sempre que tenha passado uma semana (ou qualquer outra quantidade de tempo) desde que ele executou esse comando.

Eu tenho procurado muito por esse utilitário, mas não consegui encontrá-lo. Então, alguém aqui conhece esse utilitário?

kokx
fonte
O anacron está disponível na sua plataforma? Se "falhar" na última execução, será executada na próxima vez em que o sistema for iniciado. Claro que isso não faz a coisa "toda semana". Se é isso que você realmente precisa, use um shell-script que execute o que você precisa e escreva um sinalizador para sua última execução e verifique a execução há quanto tempo foi a última execução.
21713
Anacron parece interessante, mas como você disse, não faz exatamente o que estou procurando. Eu esperava que houvesse um daemon que fizesse exatamente o que estou procurando. Obrigado de qualquer forma!
Kokx
Receio que você esteja sozinho; mas como eu disse: meu minúsculo invólucro de concha e a anacron farão o trabalho muito bem.
tink

Respostas:

2

OK, então se você criou uma entrada cron assim para o usuário relevante (sua pergunta não foi muito específica com a especificação):

0/5 * * * * /path/to/script

e script se parece com isso e você faz chmod + x / path / to / script

#!/bin/bash
set -x
today=$(date -d "today 00:00" "+%s")
if [[ -s ~/cronflag && -f  ~/cronflag ]]; then
  if [[ $(( $today - $(cat  ~/cronflag ) )) -ge 604800 ]]; then
    echo huzzah!
#    /path/to/weekly
    echo $today > ~/cronflag
    exit 0
  fi
else
#  /path/to/weekly
  echo hip-hop huzzah!
  echo $today > ~/cronflag
  exit 0
fi

você deve conseguir o resultado desejado presumindo que: a) adicione o que deseja fazer semanalmente nos dois locais em que vê # / caminho / para / semanalmente (sem o #;}) eb) a máquina geralmente recebe um tempo de atividade de> = 10 minutos.

consertar
fonte