Comandos para la programación de tareas.

Anuncio
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
Descargar