Linux no comando persistente entre reinicializações?

9

Os trabalhos agendados com 'at' são persistentes nas reinicializações? Além disso, alguém sabe como é possível fazer backup dos trabalhos sem acesso aos diretórios de spool relevantes?

Quero enviar um email em intervalos especificados a partir de agora até um ano (ou seja, 1 semana, 1 mês, 6 meses), para que isso pareça uma boa ferramenta, talvez exista uma melhor?

Kyle Brandt
fonte

Respostas:

9

Sim, eles são persistentes durante as reinicializações (são apenas arquivos em um spool).

Em relação ao acesso a eles, como usuário comum, você não terá acesso aos arquivos, mas poderá criar um sistema para fazer backup deles. Talvez algo parecido com isto:

MYAT=~/atjobs

/bin/rm -rf $MYAT/*

at -l >$MYAT/JOBS
for j in `cat $MYAT/JOBS | cut -f1`
do
  at -c $j >$MYAT/$i
done

Se você precisar recarregar o trabalho mais tarde:

for j in `cat $MYAT/JOBS | cut -f1`
do
  # make sure the job isn't defined
  atrm $j
  # reload it from the file
  at -f $MYAT/$j `grep ^$j $MYAT/JOBS | awk '{ print $3, $2 }'`
done

(tudo isso não foi testado. O comando básico está correto, mas com certeza haverá um erro na lógica em algum lugar)

Tendo dito tudo isso, porém, não tenho certeza se usaria para a tarefa que você descreve. Eu provavelmente usaria um sistema de calendário pré-existente. Falhando isso, porém, eu usaria um trabalho cron executado diariamente que verificasse um arquivo para ver se havia alguma mensagem a ser enviada. Muito mais portátil do que nos trabalhos e muito mais provável de ser lembrado se você trocar de máquina ...

jj33
fonte
Vejo como isso faz o backup dos trabalhos, mas como eu recarregaria todos esses trabalhos, se necessário?
Kyle Brandt
3

Quando você agenda um trabalho com at, mesmo que uma reinicialização seja concluída (eles são armazenados em / var / spool / cron / atjobs), o trabalho ainda é planejado.

Cordialy,

anapivirtua
fonte
0

Eu não usei muito o comando at, mas usei o cron para agendar tarefas a serem executadas e é persistente durante as reinicializações. cron trabalhou para mim nos últimos quinze anos.

Se precisar que um comando seja executado uma vez por dia e, em seguida, uma vez, mesmo que o sistema seja desativado, você pode usar o anacron .

shapr
fonte
Eu não acho que o cron seja realmente bom para isso, a menos que eu o use como o jj33 afirmou, porque não quero executar algo em intervalos regulares. Por exemplo, quando eu agendar, mesmo a AI desejará que o evento A seja executado daqui a um mês, mas não todos os meses.
Kyle Brandt