¿Linux en el comando persistente en todos los reinicios?

9

¿Los trabajos programados con 'at' son persistentes en todos los reinicios? Además, ¿alguien sabe de alguna manera que los trabajos podrían ser respaldados sin acceso a los directorios de spool relevantes?

Quiero enviar un correo electrónico a intervalos específicos desde ahora hasta un año (es decir, 1 semana, 1 mes, 6 meses), así que esto parece una buena herramienta, ¿tal vez hay una mejor?

Kyle Brandt
fuente

Respuestas:

9

Sí, son persistentes en todos los reinicios (son solo archivos en un spool).

En cuanto a tener acceso a ellos, como usuario habitual no tendrá acceso a los archivos, pero podría crear un sistema para hacer una copia de seguridad de ellos. Tal vez algo como esto:

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

Si necesita volver a cargar el trabajo más 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

(todo esto no se ha probado en su mayoría. El comando básico es correcto, pero seguramente habrá un error en la lógica en algún lugar)

Habiendo dicho todo eso, no estoy seguro de que usaría at para la tarea que usted describe. Probablemente usaría un sistema de calendario preexistente. Sin embargo, si fallara, usaría un trabajo cron que se ejecutaba diariamente y que verificaba un archivo para ver si había algún mensaje para enviar. Mucho más portátil que en el trabajo, y mucho más probable que se recuerde si cambia de máquina ...

jj33
fuente
Veo cómo eso respalda los trabajos, pero ¿cómo volvería a cargar todos esos trabajos si fuera necesario?
Kyle Brandt
3

Cuando programa un trabajo con at, incluso si se realiza un reinicio (se almacenan en / var / spool / cron / atjobs), el trabajo aún está planeado.

Cordialmente

anapivirtua
fuente
0

No he usado mucho el comando at, pero he usado cron para programar tareas que se ejecutarán, y es persistente en todos los reinicios. cron ha trabajado para mí durante los últimos quince años más o menos.

Si necesita que se ejecute un comando una vez al día, y luego se ejecute una vez, incluso si el sistema se cae, puede usar anacron .

shapr
fuente
No creo que cron sea realmente bueno para esto a menos que lo use como se indica en jj33 porque no quiero ejecutar algo a intervalos regulares. Por ejemplo, cuando programe, incluso AI querrá que el evento A se ejecute dentro de un mes, pero no todos los meses.
Kyle Brandt