Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Diferencias entre /etc/crontab y crontab -e: los usuarios en el sistema de tareas periódicas cron de Linux

Imago voragine.net
[actualizado el ]

Cron es el demonio de Linux que se encarga de ejecutar tareas periódicamente. Estas tareas se pueden añadir al archivo /etc/crontab. Este archivo es el crontab general del sistema al que únicamente tiene acceso el usuario root. Además, cada usuario dispone de un crontab particular al que pueda añadir tareas ejecutando la orden crontab -e.

Configurar una tarea periódica mediante /etc/crontab, el crontab del sistema

El usuario root puede añadir tareas a este archivo editándolo directamente, por ejemplo con vim:

sudo vim /etc/crontab

La sintaxis de este archivo es intuitiva. Cada tarea se añade mediante una nueva línea e incluye siete parámetros: los cinco primeros para definir la periodicidad de ejecución, el sexto define el usuario, el séptimo el comando a ejecutar. Por ejemplo, la siguiente línea en el crontab hará que se ejecute el comando poweroff en nombre del usuario root, es decir apagará el ordenador, todos los días a las 23:59 horas:

# minutos | horas | días | meses | día de la semana | usuario | comando
       59      23      *       *                  *      root   poweroff

El asterisco indica todos los días, todos los meses… Para comprender la sintaxis de cron se puede usar alguna de las siguientes herramientas web:

  • Corntab. Permite obtener la línea a insertar en el crontab mediante un formulario.
  • CronSandbox. Permite hacer una simulación de en qué momentos se ejecutará una tarea introduciendo los cinco parámetros que definen la periodicidad en cron.

/etc/crontab incluye la definición de la variable PATH, así para la ejecución de comandos en ubicaciones incluidas en PATH no hace falta especificar la ruta absoluta; como en el ejemplo de arriba, basta con el nombre del comando.

Configurar una tarea periódica mediante crontab -e, el crontab de un usuario

Si un usuario cualquiera, incluido el root, ejecuta crontab -e abrirá su crontab personal:

crontab -e

Todas las tareas que un usuario añada a su crontab personal serán ejecutadas por cron en su nombre. Cada tarea se añade mediante seis parámetros, los mismos que en el crontab del sistema excepto el usuario, que va implícito.

El usuario root puede añadir tareas a los crontab de otros usuarios usando el modificador -u al invocar crontab:

# crontab -u username -e

Dependiendo de la tarea que se quiera añadir a cron, más concretamente de los permisos necesarios para ejecutarla, elegiremos un usuario u otro.

Al usar crontab -e hay que especificar la ruta absoluta para los comandos, ya que la variable PATH no estará definida a la hora de ejecutar los comandos. Cualquier ruta relativa hará referencia al directorio personal del usuario del crontab. Si se está ejecutando un script de bash, las llamadas a otros comandos en él deberán hacerse mediante rutas absolutas también.

Configurar una tarea periódica para otro usuario

Para realizar esta tarea se necesitan permisos de root. Basta utilizar el modificador -u de la orden crontab:

sudo crontab -u username -e

Para consultar el crontab de un usuario se puede usar:

sudo crontab -u username -l

2 comentarios

    • Por Fidias •

    Muchas gracias por el articulo, Me ayudo mucho.

×

Responder al comentario de Fidias

*
*