Tareas programadas linux

Ejemplo de Crontab

Hacer que las cosas sucedan en un horario regular y predecible es importante en los ordenadores. Es importante porque, como humanos, a veces podemos ser malos recordando hacer cosas de forma fiable porque nos distraemos, tenemos demasiadas cosas en la cabeza o estamos de vacaciones. Los ordenadores son muy buenos para hacer cosas según un calendario, pero un humano tiene que programar el ordenador antes de que éste actúe.

En cierto modo, el sistema cron es una introducción fácil y rudimentaria a la programación. Puedes hacer que tu ordenador haga lo que quieras con sólo editar un archivo. Ni siquiera tienes que saber dónde se guarda el archivo. Sólo tienes que escribir un simple comando, introducir la “receta” que quieres que siga tu ordenador y guardar tu trabajo. A partir de ese momento, tu ordenador ejecutará tus instrucciones a la hora especificada hasta que se le indique que se detenga.

El comando cron es tan omnipresente en Linux y Unix, y ha sido imitado y reinventado tan a menudo que es casi un término genérico para algo que ocurre en un horario. Es una forma de automatización, y aunque hay diferentes implementaciones de la misma (Dillon’s cron, Vixie’s cron, chrony, y otros), y variaciones como anacron y systemd timers, la sintaxis y el flujo de trabajo han permanecido esencialmente iguales durante décadas.

Programación en Ubuntu

En esta lección, aprenderemos qué son los comandos de programación en Linux y por qué querrías usarlos. En concreto, demostraremos cómo programar tareas para que se ejecuten en el futuro utilizando el comando at.

Comandos de programación en LinuxEn Linux, cuando quieres editar una imagen, abres un programa de edición de imágenes como gimp y completas tu tarea. Este es un ejemplo de realizar una tarea en el momento actual. ¿Qué pasa si quieres realizar alguna tarea en un momento futuro? Puedes utilizar los comandos de programación en Linux para programar una tarea para que se ejecute en un momento posterior. Por ejemplo: Dos de los demonios de programación más populares en Linux son cron y atd. Los daemons son programas especiales que se ejecutan en segundo plano a la espera de que se produzcan algunos eventos o condiciones, para que se activen. En Linux, el demonio cron ejecuta tareas en segundo plano a horas específicas. Para programar una tarea usando cron, necesitas editar un archivo especial llamado archivo crontab en un editor de texto y añadir tu tarea en él en un formato particular. Entonces cron ejecutará la tarea por usted a la hora que especifique en el archivo crontab. Puedes especificar cualquier intervalo de tiempo, desde segundos hasta semanas e incluso años.

Programar la ejecución de comandos en Linux

cron es el demonio responsable de la ejecución de comandos programados y recurrentes (cada día, cada semana, etc.); atd es el que se ocupa de los comandos que se ejecutan una sola vez, pero en un momento concreto del futuro.

Por defecto, todos los usuarios pueden programar la ejecución de tareas. Así, cada usuario tiene su propio crontab en el que puede registrar los comandos programados. Se puede editar ejecutando crontab -e (su contenido se almacena en el archivo /var/spool/cron/crontabs/user).

Se puede restringir el acceso a cron creando un archivo de autorización explícito (whitelist) en /etc/cron.allow, en el que se indican los únicos usuarios autorizados a programar comandos. Todos los demás quedarán automáticamente privados de esta función. A la inversa, para bloquear sólo a uno o dos problemáticos, puedes escribir su nombre de usuario en el archivo de prohibición explícita (lista negra), /etc/cron.deny. Esta misma característica está disponible para atd, con los archivos /etc/at.allow y /etc/at.deny.

El usuario root tiene su propio crontab, pero también puede utilizar el archivo /etc/crontab, o escribir archivos crontab adicionales en el directorio /etc/cron.d. Estas dos últimas soluciones tienen la ventaja de poder especificar la identidad del usuario a utilizar cuando se ejecuta el comando.

Tareas en Linux

Cuando quieras que los comandos o scripts se ejecuten en un momento determinado, no tienes que sentarte con los dedos sobre el teclado esperando a pulsar la tecla enter o incluso estar en tu escritorio en el momento adecuado. En lugar de eso, puedes configurar tu tarea para que se ejecute a través del comando at. En este artículo, veremos cómo se programan las tareas mediante at, cómo puede seleccionar con precisión la hora a la que desea que se ejecute su proceso y cómo ver lo que se ha programado para ejecutarse mediante at.at vs cronPara aquellos que han estado programando tareas en sistemas Linux mediante cron, el comando at es algo parecido a cron en el sentido de que puede programar tareas para que se ejecuten a una hora seleccionada, pero cron se utiliza para trabajos que se ejecutan periódicamente, incluso si eso significa sólo una vez al año. La mayoría de los trabajos de cron están configurados para ejecutarse diaria, semanal o mensualmente, aunque tú controlas la frecuencia y el momento.El comando at, por otro lado, se utiliza para tareas que se ejecutan sólo una vez. ¿Quieres reiniciar tu sistema a medianoche? No hay problema, at puede hacerlo por ti asumiendo que tienes los permisos adecuados. Si quieres que el sistema se reinicie todos los sábados a las 2 de la madrugada, utiliza cron en su lugar.