Programación de tareas
cron
Los scripts que han de dar mensajes al usuario si son ejecutados en shell interactivo (que también se pueden ejecutar como no interactivo):
for i in "$@" ; do
if [[ $i == "--cron" ]] ; then
# Establecemos como salida de todos los pipes al logger
exec &> >(logger -t "$0")
break
fi
done
Los echo que subsigan han de ser normales, hacia:
echo "Generación del archivo correcta"
# STDERR (no incluir $0)
echo "Error en la generación del archivo" >&2
Para llamar al script:
$HOME/scripts_linux/prova.sh
# Desde el cron
echo "$HOME/scripts_linux/prova.sh --cron" | batch &>/dev/null
Parámetros
do
case "${flag}" in
s) RANGO_RANDOM=${OPTARG};;
f) FICHERO_KEY=${OPTARG};;
d) DIRECTORIO_BASE=${OPTARG};;
esac
done
[ -z "$RANGO_RANDOM" ] && echo "Falta parámetro aleatorio" && exit 2
[ -z "$FICHERO_KEY" ] && echo "Falta el nombre del fichero" && exit 2
[ -z "$DIRECTORIO_BASE" ] && echo "Falta el directorio de partida" && exit 2
# echo "Rango retraso: $RANGO_RANDOM";
# echo "Fichero clave: $FICHERO_KEY";
# echo "Directorio: $DIRECTORIO_BASE";
batch
Permite retrasar la ejecución de un comando hasta que la carga del sistema baja más allá de un parámetro fijado.
Info:
* http://www.thegeekstuff.com/2010/06/at-atq-atrm-batch-command-examples/
Por ejemplo se está usando en la actualización de la galería de fotos, en el crontab del usuario hugo.
echo "$HOME/scripts_linux/actualitza_galeria/actualitza_galeria.sh" | batch &>/dev/null
Para las tareas periódicas, el batch ha de incluirse al nivel más bajo en el que dé igual el orden de ejecución.
Resumen de comandos
Listar trabajos en colaatq
Consultar trabajoat -c [numero de job]
Eliminar un trabajo en colaatrm [numero job]
Eliminar todas las tareas de la colafor i in `atq | awk '{print $1}'`;do atrm $i;done