batch Permite la ejecución de diferentes comandos, que iremos escribiendo en el prompt que nos abra el propio comando. Cada vez que escribamos un comando que queramos que batch procese, pulsaremos ENTER y cuando hayamos termiando de escribir todos los que queramos que sean procesados, pulsaremos Ctrl+d para finalizar. Una vez hayamos acabado de escribir todos los comandos que deseemos, el sistema los irá ejecutando uno tras otros. Conforme se termine el anterior, comenzará el siguiente, siempre que la carga de la máquina no sea elevada. En el momento en el que la máquina esté saturada, dejará de procesar los comandos escritos en batch hasta que vuelva a una carga normal, momento en el que seguirá procesando comandos. Es casi equivalente a la ejecución que obtendríamos si escribiéramos comando1; comando2; comando3 ya que, tras pulsar ENTER, una vez acabe la ejecución de comando1 empezará a ejecutarse comando2, etc. Lo que ocurre es que mediante esta sintaxis da lo mismo la carga del sistema, es decir, de forma independiente a lo cargado o no que esté el sistema, los comandos se irán ejecutando. at Al pulsar ENTER tras ejecutar at se nos abre un prompt de at que nos irá permitiendo escribir comandos. Cada vez que escribamos un comando pulsaremos de nuevo ENTER hasta que hayamos escrito todos los necesarios y finalmente pulsemos Ctrl+d, momento en el que se almacenará la tarea demorada hasta el momento en el que hayamos indicado tras el comando at. Para indicar en qué momento queremos que se ejecuten estos comandos indicados, tendremos que indicarlo tras el comando at. Tenemos difentes palabras predefinidas para diferir la ejecución de at a periodos concretos, como por ejemplo at midnight que ejecutará los comandos a media noche. at noon que ejecutará los comandos a medio día. at teatime que ejecutará los comandos a la hora del te (cuatro de la tarde). No obstante lo más habitual es describir exactamente el momento, escribiendo por ejemplo at 4pm +3days para indicar que se ejecuten los comandos que escribiremos a continuación a las cuatro de la tarde dentro de tres días. Podemos especificar también horas concretas at 18:01 para ejecutar las tareas a las seis y un minuto de la tarde. podremos indicar una fecha escribiendo at 19.01.2020 para indicar el 19 de enero de 2020. Para comprobar los trabajos diferidos que hemos lanzado mediante at ejecutaremos atq y si queremos eliminar uno en concreto, ya que aparecen numerados ejecutaremos atrm numero siendo numero el indicativo del trabajo que queremos eliminar. cron El cron es un mecanismo algo más elaborado para diferir tareas. Realmente con cron no es que se difieran tareas, sino que estas son programadas, pues escribimos exactamente el momento en el que queremos que estas se ejecuten, y además implicando repetición de la tarea al menos de forma anual. Para ejecutar tareas mediante cron tendremos que editar la tabla del cron mediante el comando crontab. Para realizar esta edición ejecutaremos por tanto crontab -e y se nos abrirá un archivo temporal en nuestro editor por defecto. Si ya tenemos alguna tarea programada con cron, esta aparecerá. Si es la primera vez que editamos la tabla del cron aparecerá un fichero vacío. Una posible sintaxis de edición sería 1 9 15 01 * programa de tal forma que a las nueve y un minuto de la mañana de los 15 de enero se ejecutará el programa. La primera columna por tanto indica el minuto de ejecución, la segunda la hora, la tercera el día, la cuarta el mes, la quinta el día de la semana y a partir de esta indicamos el comando a ejecutar, para el que deberíamos indicar preferiblemente su ruta absoluta. Por ejemplo podríamos indicar: 1 1 * * 1 /directorio/programa para que los lunes a la una y un minuto de la mañana se ejecute el programa /directorio/programa o también podríamos indicar: 1 1 1 1 1 /directorio/programa para indicar que el uno de enero a la una y un minuto de la mañana Y los lunes a la una y un minuto de la mañana se ejecute /directorio/programa Debemos tener muy presente este ejemplo, comprobando cómo hemos querido resaltar el "Y" ya que es una equivocación pensar que esta sintaxis implica la ejecución de /directorio/programa el uno de enero a la una y un minuto de la mañana si es lunes. Como habíamos visto con anterioridad podemos utilizar el caracter * como comodin, de tal forma que si programamos * * * * * /directorio/programa indicamos cada minuto se ejecute /directorio/programa o por ejemplo * * * * 0 /directorio/programa que implicaría que cada minuto de los domingos se ejecute /directorio/programa. Escribir 0 o 7 en la columna del día de la semana implica domingo. También podemos indicar que se ejecute cada cinco minutos escribiendo: 5,10,15,20,25,30,35,40,45,50,55,0 * * * * /directorio/programa o de una forma mucho más compacta: */5 * * * * /directorio/programa Una vez hayamos guardado el fichero temporal que se ha abierto, cada minuto el sistema comprobará si existe alguna tarea programada para ese momento, y si es así la ejecutará. Para comprobar la tabla de cron ejecutaremos crontab -l