Skip to content

Tareas Programadas

Cron

Administrador de tareas

Se utiliza para reproducir un script en un momento concreto , entre otras cosas.

Su carpeta se encuentra en:

Fichero: /etc/crontab (ahí guardaremos los scripts)

Tabla de referencia imaginaria para el comando.

Minutos Horas Día del mes Mes Día semana
01 * * * *

Ejecutar cada minuto 1 de cada hora de cada día del mes, mes y día de la semana.

*/5 * * * *

Ejecutar cada 5 minutos.

15 20 * * *

Ejecutar a las 20:15 horas de cada día, mes, etc..

45 19 1 * *

Ejecutar cada 1er día del mes a las 19:45

30 * 10 - 25 * 6 - 7

Ejecutar cada 30m de cada hora los días del 10 al 25 todos los meses sábados y domingos

00 18 - 20 25 3 - 7 1,3,6

Ejecutar cada hora entre las 18:00 y 20:00 el día 25 del mes entre marzo y julio si es lunes(1), miércoles(3) o sábado(6).

Los guiones marcan rangos y las comas para números específicos.

Comando:

15 20 * * * “user” “ruta absoluta del script”

(Importante) Respetar los espacios, user y ruta no llevan asteriscos””.

Tabla de referencia imaginaria para el comando.

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

Ejemplos

| Minutos | Horas | Día del mes | Mes  | Día semana |

#Ejecutar cada minuto 1 de cada hora de cada día del mes, mes y día de la semana.
01 * * * *

#Ejecutar cada 5 minutos.
*/5 * * * *

#Ejecutar a las 20:15 horas de cada día, mes, etc..
15 20 * * *

#Ejecutar cada 1er día del mes a las 19:45
45 19 1 * *

#Ejecutar cada 30m de cada hora los días del 10 al 25 todos los meses sábados y domingos
30 * 10-25 * 6-7

#Ejecutar cada hora entre las 18:00 y 20:00 el día 25 del mes entre marzo y julio si es lunes(1), miércoles(3) o sábado(6).
00 18-20 25 3-7 1,3,6

#viernes 12:15 de la noche
15 00 * * 6
crontab -l 
crontab -e
crontab -r   ~ sudo cat /var/spool/cron/isx47787241  
crontab fichero

At

at programa tareas a una hora y dia determinados, esta tarea se ejecutara siempre que el pc este encendido en la fecha indicada, de no ser así se perderá la tarea.

Dentro del directorio /var/spool/at/ crea un fichero con cada una de las tareas por hacer.

ejemplos

ver tareas adjudicadas

atq

borrar una tarea del at programada

atrm 3  

Ejecutar un script a una hora determinada

at -f backup.sh 10:22

Programa una tarea para dentro de 5 minutos que elimine de un directorio todos los ficheros con extensión .tmp .

at now +5 minutes
find /tmp/ -name *.tmp -exec rm {} \;

Programa una tarea con at a las 17:00 de hoy para que elimine los ficheros del directorio descargas de tu sistema.

at 17:00 
sudo find /tmp/descargas/* -exec rm {} \;

Denegar a un usuario utilizar at

echo "user" >> /etc/at.deny

at 11:00
You do not have permission to use at.

Diferentes formatos de usar at

  • formato HH:MM
at 11:00 # proramas a una hora especifica
  • midnight
at midnight # se ejecuta a media noche 00:00
  • noon
at moon # medio día 12:00
  • teatime
at 4pm 0 am # formato 12 horas
  • formato del nombre-mes, día y año
at -v jan 30 2018
Tue Jan 30 10:40:00 2018
  • formato MMDDYY, MM/DD/YY, o MM.DD.YY
at -v 12/10/2017
Sun Dec 10 10:42:00 2017

at -v 12102017  
Sun Dec 10 10:44:00 2017
  • now + time
at -v now + 5 days
Wed Dec  6 10:46:00 2017

t -v now + 60 minutes
Fri Dec  1 11:47:00 2017

at -v 2:30 PM 21.10.20
Wed Oct 21 14:30:00 2020

Crea un script que abra un nuevo terminal dentro de 5 minutos.

at -v now +5 minutes   
Fri Dec  1 11:13:00 2017

at> export DISPLAY=:0
at> gnome-terminal

Programa una tarea que muestre la fecha mañana y 5 minutos .

at -v tomorrow +5 minutes
date >> /dev/pts/0

Batch

batch permite no cargar el systema en caso de que este por encima de un porcentaje concreto.

Aunque at le diga que ejecute el script batch esperara a ejecutar este mismo hasta que el systema este por debajo del porcentaje indicado.

En el siguiente ejemplo le indicamos a batch que se ejecute cuando el systema esté por debajo del 10% y en un intervalo entre script y script de 60 segundos

atd -l 0.1 # cambiar nivel de carga de batch
atd -b  60 # número de segundos que tardará en ejecutar entre tareas segundos

Ejemplo

Ejecutar un script en 5 minutos

at now +5 minutes
warning: commands will be executed using /bin/sh
at> batch -f script