viernes, 9 de marzo de 2012

Programación de tareas en el tiempo

At -> Crear tareas programadas (en colas: a-z,A-Z) que se ejecutarán una vez en el tiempo (demonio atd).
Comando: at [-l / -d] [-q <NoCola>] -f <ScriptAEjecutar> -m <CuandoEjecutar> (-l / -d: lista / borra tareas)
  • Listas de usuarios permitidos/denegados a insertar tareas (uno por linea): /etc/at.allow, /etc/at.deny
Cron -> Permite ejecutar tareas periódicamente en el tiempo (demonio crond).
  • Utilización como script: Crear el script a ejecutar en la carpeta deseada /etc/cron.xxx donde:
    hourly (cada hora), daily (cada día), weekly (cada semana), monthly (cada mes)
  • Utilización mediante archivo de tareas /etc/crontab (Permite más control sobre los intervalos de tiempo):
    # Rutas si no se especifican, se toman las del usuario actual.
    SHELL=[<RutaAlShellQueEjecutaLosComandos>]
    PATH=<RutasDeCarpetasDondeSeBuscaranLosComandosEjecutados>
    MAILTO=[<DirecciónDeCorreoQueRecibiráLaSalidaDe/LosComandosEjecutados>]
    HOME=[<RutaALaCarpetaHomeDelUsuarioQueEjecuta>]
    # Tareas cron (cada una en una línea)
    # Sintaxis: mm hh DD MM WW <NombreUsuarioQueEjecuta> Comando1[;Comando2]...[;ComandoN]
    # mm: Minutos, hh: hora, DD: día del mes, MM: mes, WW: día de la semana (domingo: 0 o 7).
    # Valores posibles: Todos (*), Cada x (*/x), Alternos (n1,n2,n3).
  • A tener en cuenta:
    1.- Sólo el usuario root tiene permisos de escritura sobre /etc/cron.xxx. o sobre el archivo /etc/crontab.
    2.- Los usuarios no root editan sus tareas ejecutando: crontab -e [-u <NombreUsuario>] (sin colum. usuario)
    3.- Listas de usuarios permitidos/denegados a insertar tareas (uno por linea): /etc/cron.allow, /etc/cron.deny
    4.- Si una tarea programada en cron no sucede (p.ej.: pc apagado), ya no sucederá jamás para ese instante.
Escribimos en terminal: nano /etc/cron y pulsamos dos veces el tabulador para ver los distintos archivos que podemos editar.

Nosotros vamos al crontab: nano /etc/crontab.


Añadimos una línea al final (ver ejemplos en google):


/etc/crontab (http://francisconi.org)
Contiene información acerca de los trabajos que se van a ejecutar. Cada usuario tiene un archivo crontab que se guarda en el directorio /var/spool/cron. Cada archivo tendrá un nombre que será el del usuario que creo cada tab. La única diferencia entre /etc/crontab y los crontabs de usuario es que el /etc/crontab agrega un campo adicional donde se especifica bajo que usuario se ejecutarán las tareas. Ejemplo:
@reboot root kinit -k host/pzosdgstdeb1$ -c /tmp/krb5cc_0
* */7 * * * root kinit -k host/pzosdgstdeb1$ -c /tmp/krb5cc_0
@reboot postfix kinit -k -t /var/spool/postfix/etc/krb5.keytab -c /var/spool/postfix/tmp/krb5cc_107
* */7 * * * postfix kinit -k -t /var/spool/postfix/etc/krb5.keytab -c /var/spool/postfix/tmp/krb5cc_107
A continuación se ejecuta el script: /home/user/test.pl cada 5 minutos

*/5 * * * *  /home/user/test.pl
 
.---------------- minuto (0 - 59) 
|  .------------- hora (0 - 23)
|  |  .---------- día del mes (1 - 31)
|  |  |  .------- mes (1 - 12) O jan,feb,mar,apr ... (los meses en inglés)
|  |  |  |  .---- día de la semana (0 - 6) (Domingo=0 o 8) O sun,mon,tue,wed,thu,fri,sat (los días en inglés) 
|  |  |  |  |
*  *  *  *  *  comando para ser ejecutado 

Ejemplo: Evitar que Amule se cierre solo
1) Creamos el archivo amule.cron (touch /home/adrian/amule.cron) y colocamos en el:
#!/bin/sh

/sbin/pidof amule >/dev/null

if [ $? != 0 ]
then
   
    exec /usr/bin/amule
fi

2) Luego lo hacemos ejecutable:
chmod +x /home/adrian/amule.cron

3) Editamos nuestro crontab (crontab -e) y colocamos en el:
*/1 * * * * export DISPLAY=:0 && /home/adrian/amule.cron

Anacron -> Programa que permite ejecutar tareas cada n días en el sistema. Diferencias con respecto a cron:
- Anacron es un programa (no un demonio), por lo que hay que ejecutarlo periódicamente (con cron).
- Se garantiza que una tarea que no se haya ejecutado en su debido momento se ejecute al iniciar anacron.
- Anacron sólo permite gestionar tareas como usuario root.
- Anacron guarda en la carpeta /var/spool/anacron un archivo por cada tarea indicando su última ejecución.
- Archivo de tareas /etc/anacrontab:
# Rutas si no se especifican, se toman las del usuario actual.


SHELL=[<RutaAlShellQueEjecutaLosComandos>]
PATH=<RutasDeCarpetasDondeSeBuscaranLosComandosEjecutados>
#Tareas anacron (cada una en una línea)
#Sintaxis: NN MM TID Comando1[;Comando2]...[;ComandoN]
#NN: Ejecución de tarea cada NN días
#MM: Minutos para que anacron ejecute la tarea (anacron sólo deberá ejecutar una tarea a la vez)
#TID: Nombre/Identificador único para cada tarea (No deben de haber dos o más tareas con el mismo TID).

No hay comentarios:

Publicar un comentario