En GNU/Linux puedes programar tus tareas cron de diferentes maneras

Puede que le sorprenda que la versión de cron que se ejecuta en su servidor hoy en día es en gran medida compatible con la especificación crontab escrita en la década de 1970.
Una desventaja de esta cuidadosa compatibilidad con versiones anteriores es que los trabajos, incluso en el mismo servidor, se pueden crear y programar de manera diferente.
Este artículo, es una traducción/adaptación de un artículo en inglés escrito por Shane Harter que puedes encontrar en este enlace:
1.- El crontab de usuario
En sistemas GNU/Linux, cada usuario tiene su propio crontab que puede ver y actualizar con el comando crontab. Para ver un listado de las tareas cron de tu usuario, puedes ejecutar:
crontab -l
El crontab de cada usuario es el lugar más fácil para añadir un nuevo trabajo para que se ejecute de manera automática cuando quiera, por lo que es el que se usa de manera frecuente y es el primer lugar en el que buscar cuando no se está seguro de cómo se ha programado una tarea.
Para editar una tarea crontab y añadir y/o modificar nuevas tareas puedes hacerlo mediante:
crontab -e
En los «logs» o registros de los sistemas GNU/Linux queda registrados, además de muchos otros eventos, qué tareas crontab se han realizado y de qué usuario del sistema son.
2.- El crontab del usuario root
Como cualquier otro usuario del sistema, también el usuario «root» de GNU/Linux puede tener establecidos sus propias tareas crontab.
Puedes iniciar sesión como «root» y listar si hay tareas de cron con el comando que hemos visto anteriormente.
3.- El archivo crontab del sistema
La forma original y que todavía se sigue utilizando para programar trabajos cron en todo el sistema, es agregando entradas en el archivo: /etc/crontab.
Para escribir en /etc/crontab requiere privilegios de usuario «root» y los trabajos programados se pueden ejecutar como cualquier usuario del sistema.
Si la primera palabra en su comando de trabajo coincide con una cuenta de usuario del sistema, el comando se ejecuta como ese usuario. Si no se especifica ningún usuario, se ejecuta como root.
Aquí el usuario tux realizará la siguiente tarea cron:
* 0 * * * tux /var/scripts/backup.sh
4.- Un archivo crontab en el propio directorio /etc/cron.d
En algún momento los desarrolladores se dieron cuenta de que era una mala práctica tener un único crontab en todo el sistema que pudiera ser cambiado por instaladores y herramientas automatizadas y nació el directorio /etc/cron.d/.
Los trabajos se programan usando /etc/cron.d copiando o creando un enlace simbólico a un archivo crontab. Al igual que los trabajos programados en /etc/crontab, la primera palabra del comando puede especificar opcionalmente el usuario para ejecutar el trabajo.
5.- Un script o comando en /etc/cron.hourly, /etc/cron.daily, etc
Cuando la programación de una tarea al detalle es menos importante que la simple frecuencia, se pueden crear trabajos cron copiando o enlazando un script en los directorios:
- /etc/cron.hourly – realiza tareas de a cada hora
- /etc/cron.daily – realiza tareas de a cada día
- /etc/cron.weekly – realiza tareas de a cada semana
- /etc/cron.monthly – realiza tareas de a cada mes
Bola extra
Como información extra, cuando los crontabs de usuarios individuales se editan mediante el comando crontab -e que hemos visto anteriormente, los archivos crontab se almacenan en /var/spool/cron.
No es buena idea editar esos archivos directamente y, en su lugar, es recomendable ejecutar crontab -e como el usuario que ejecutará el trabajo programado.
Si editas esos archivos en /var/spool/cron directamente, perderás el beneficio de la verificación de sintaxis que proporciona crontab -e y es posible que tu distribución de GNU/Linux no detecte los cambios realizados sin una recarga explícita del demonio cron.
¿Te ha resultado interesante la lectura? No hemos entrado al detalle de cómo crear tareas cron, algo que por la red se puede encontrar sin mucho problema, pero sí hemos visto donde podemos programar nuestras tareas cron.
Si aprendiste algo nuevo, o si hay algo que sabes que no se ha comentado aquí y que complementa lo escrito, usa los comentarios del blog para compartir lo que quieras.
