Linux a comando persistente tra i riavvii?


10

I lavori pianificati con 'at' persistono tra i riavvii? Inoltre, qualcuno sa in che modo è possibile eseguire il backup dei lavori senza accedere alle relative directory di spool?

Voglio inviare un'e-mail a intervalli specifici da ora fino a un anno (ovvero 1 settimana, 1 mese, 6 mesi), quindi questo sembra un buon strumento, forse ce n'è uno migliore?

Risposte:


10

Sì, sono persistenti tra i riavvii (sono solo file in uno spool).

Per quanto riguarda l'accesso ad essi, come utente normale non avrai accesso ai file, ma potresti creare un sistema per eseguirne il backup. Forse qualcosa del genere:

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 è necessario ricaricare il lavoro in un secondo momento:

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

(questo è per lo più non testato. Il comando di base è giusto ma c'è sicuramente un bug nella logica lì da qualche parte)

Detto questo, però, non sono sicuro di utilizzare per l'attività che descrivi. Probabilmente userei un sistema di calendario preesistente. In caso contrario, utilizzerei un lavoro cron che viene eseguito quotidianamente e che controlla un file per vedere se ci sono messaggi da inviare. Molto più portatile rispetto ai lavori e molto più probabilità di essere ricordato se si cambia macchina ...


Vedo come questo esegue il backup dei lavori, ma come ricaricare tutti quei lavori se necessario?
Kyle Brandt,

3

Quando si pianifica un lavoro con at, anche se viene eseguito un riavvio (sono memorizzati in / var / spool / cron / atjobs), il lavoro è ancora pianificato.

Cordialy,


0

Non ho usato molto il comando at, ma ho usato cron per pianificare l'esecuzione delle attività ed è persistente durante i riavvii. cron ha lavorato per me negli ultimi quindici anni circa.

Se è necessario eseguire un comando una volta al giorno e quindi eseguirlo una volta anche se il sistema si arresta, è possibile utilizzare anacron .


Non credo che cron sia davvero buono per questo a meno che non lo usi come indicato da jj33 perché non voglio eseguire qualcosa a intervalli regolari. Ad esempio, quando pianifico anche l'intelligenza artificiale vorrà che l'evento A venga eseguito tra un mese, ma non tutti i mesi.
Kyle Brandt,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.