Tabla de Contenidos

1.3 - Ejecución en el último día del mes

1.2.1 Descripción

Este comanod determina si mñana será el primer día del próximo mes. si descubre que así es, podrá ejecutar un script o programa definido.

Primer ejemplo: el método de shell

Sintaxis: TZ={GMT | PST | EDT | …} -24 date +%d

TZ es una variable reservada de zona horaria del sistema UNIX. Simplemente indíquele a TZ qué día será mañana agregando un día a la fecha actual (+%d). Si hoy es el último día del mes (esto es, el día 31), TZ reconocerá que mañana es el primer día del siguiente mes.

TZ=PST -24 date +%d

Entonces puede incluirse lo siguiente para ejecutar un programa si el resultado de TZ es 1.

#!/bin/sh

FILE= `runme`
if test `TZ=PST -24 date +%d` = 1; then
    $FILE
fi

Ejemplo dos: el método Perl

He aquí un método genérico que utiliza un script de Perl para lograr los mismos resultados del ejemplo anterior. Éste puede incrustarse dentro de un programa Perl más grande, para evitar generar otro proceso.

#! /usr/bin/perl

use POSIX;

@THE_DATE = localtime (time);
++$THE_DATE[3];
if ((localtime (POSIX::mktime (@THE_DATE)))[3] == 1 ) {
       exit 0;
}
exit 1;

Razón

Habrá ocaciones en las que ustede necesite ejecutar programas (como respaldos completos, trabajos de procesamiento por lotes, filtrado de archivos de registro o de utilización del sistema) en el último día del mes. A primera vista, tal vez pinese que se trata de una tarea fácil. ¿Porqué molestarse en usar scripts? ¿Porque no establecer una linea de crontab? Es mejor utilizar un script como éste, ya que cron presenta un problema: solo permite la ejecución en cualquiera o todos los días del 1 al 31, pero no puede determinar cuál es el último día de cada mes, por lo que usted debe encontrar la manera de calcularlo.

Experiencia en el mundo real

Este pequeño truco ha sido de ayuda en incontables ocaciones. Es muy sencillo adjuntarlo a scripts existentes para enviar mensualmente a la administración y a los usuarios, registros, uso de discos y acceso de usuarios, junto con otra información útil. Es agradable escuchar a sus usuarios o a su jefe agradecerle el tiempo extra que invierte en la elaboración de los reportes cada mes. Ellos ni se imaginan lo fácil que es.

Otras fuentes

Páginas del manual: localtime, tzset, tzfile, crontab


Volver al índice