Uso de cron: herramienta infaltable para sysadmins

La vida de un sysadmin puede ser fácil o complicada (siempre hablando de sus tareas diarias). Por lo general, eso depende de la disciplina que uno tenga para invertir tiempo en automatizar tareas repetitivas. Además, un par de horas dedicadas a desarrollar scripts seguramente rendirán fruto. Una de las primeras cosas que tuve que repasar al comenzar a trabajar como sysadmin fue el uso de cron, que resumiremos entre este post y el siguiente. Las varias alternativas de configuración, que no conocía en su momento del todo, me hubieran ahorrado unos cuantos dolores de cabeza.

Recordemos algunos principios básicos del uso de cron
Recordemos algunos principios básicos del uso de cron

Uso de cron

En primer lugar, recordemos cómo utilizar el comando crontab:

  • Para mostrar la configuración del usuario actual: crontab -l
  • Ver las tareas agendadas de usuario (si tenemos permisos de superusuario): crontab -u usuario -l
  • Abrir el archivo del usuario actual para ser editado por la herramienta indicada por las variables de entorno VISUAL o EDITOR. Si ninguna de estas variables está seteada, se abrirá una lista de editores disponibles para efectuar la edición: crontab -e
  • Editar la tabla de fulano: crontab -u fulano -e
  • Eliminar el archivo del usuario actual: crontab -r
  • crontab -u mengano -r borrará el crontab de mengano

De más está decir que hay que tener cuidado cada vez que vayamos a utilizar la opción -r. Mejor es agregar -i que nos preguntará si estamos seguros de querer eliminar el crontab en vez de hacerlo directamente.

¡Cuidado!

Las opciones listadas arriba son MUY importantes. Debemos extremar cuidados para nunca hacer lo que hizo un compañero sysadmin (bien junior) mientras estaba logueado como root en un servidor de producción. Se había creado un archivo (llamémosle rootcron.txt) con varias entradas de crontab, y se le ocurrió «importarlas» al cron de root con el siguiente comando:

crontab rootcron.txt

¿Qué creen que pasó? ¡Reescribió el crontab de root con los contenidos de rootcron.txt! Después tuvo que pasar varias horas hurgando en /var/log/syslog para tratar de reconstruir el crontab original. La idea estaba buena y hubiera funcionado de maravilla, pero no pensó que había entradas existentes que se irían por el inodoro.

¡Hasta la próxima!