¿Dónde está almacenado el crontab del usuario?

216

Desde que se eliminó la actualización del crontab de mi usuario. Esta no es la primera vez que esto sucede este año y es un dolor restaurarlo cada vez.

Me gustaría poder hacer una copia de seguridad del crontab para mi usuario, pero para eso necesito saber dónde está almacenado.

    
pregunta Oli 13.11.2012 - 15:26

4 respuestas

277

En realidad, no se recomienda manejar esos archivos a mano. Por crontab man page:

  

Cada usuario puede tener su propio crontab, y aunque |   estos son archivos en /var/spool/cron/crontabs , no son archivos
  destinado a ser editado directamente.

Los archivos en /var/spool se consideran temporales / operativos, por eso es probable que se eliminen durante una actualización, aunque un análisis más detallado de los scripts de actualización del paquete cron puede arrojar algo de luz sobre esto.

De todos modos, siempre es una buena práctica hacer una copia de seguridad de tus entradas de cron o mantenerlas en un archivo en tu directorio de inicio.

Supongo que está utilizando crontab -e para crear archivos crontab sobre la marcha. Si es así, puede obtener una "copia" de su archivo crontab haciendo crontab -l . Transfiera eso a un archivo para obtener una "copia de seguridad":

crontab -l > my-crontab

Luego, puede editar ese archivo my-crontab para agregar o modificar entradas, y luego "instalarlo" entregándolo a crontab:

crontab my-crontab

Hace la misma comprobación de sintaxis que crontab -e .

    
respondido por el roadmr 13.11.2012 - 16:21
45

Se almacena dentro de la carpeta /var/spool/cron/crontabs debajo del nombre de usuario.

    
respondido por el Manula Waidyanatha 13.11.2012 - 15:29
27

Finalmente descubrí por qué mis crontabs y la instalación de Postfix seguían rompiéndose después del arranque. Es una razón realmente estúpida, pero ...

Tenía /var/spool montado como tmpfs unidad RAM.

Suena estúpido y lo es, pero había seguido uno de los viejos ajustes de SSD para alargar la vida de mi SSD. Al hacerlo, monté ciegamente /tmp , /var/tmp y /var/spool como tmpfs sin pensar en las repercusiones. Pensé que /var/spool era como /proc/ o /run/ y que solo fue útil durante la sesión. Estaba claramente equivocado.

    
respondido por el Oli 30.05.2013 - 15:20
10

Para enumerar todas las tareas cron de todos los usuarios en su sistema:

for user in $(cut -f1 -d: /etc/passwd)
do
  echo $user
  crontab -u $user -l
done

Una alternativa a su problema sería colocarlos en la carpeta cron.d y especificar el usuario apropiado por cron como en el ejemplo:

00 01 * * * user /home/user/user-script.sh
    
respondido por el pl1nk 28.03.2013 - 13:39

Lea otras preguntas en las etiquetas