вторник, 21 июля 2009 г.

Из серии, не просто, а очень просто

Бывает, что надо выполнять какое либо действие в том же линуксе в последний день месяца, но так как в месяце у нас не одинаковое количество дней, гдето 30, гдето 31, а гдето вообще 28, народ начинает извращаться, придумывая адские формулы расчета високосных годов, перекапывая гугель в поисках функций гадания на кофейной гуще. Немного творческого подхода и все оказывается гораздо проще.
Логика следующая, определяем сегодняшнюю дату, прибавляем к ней 1 день(86401 секунду), потом смотрим какой день получается, если он равна 1(еденице) то значит новый месяц наступил и текущий день является последним в текущем месяце.
Элементарный пример на томже баше:

#!/bin/bash

DATENOW=`date +%d --date="+1day"`

if [ $DATENOW -eq 1 ]
then
/home/odmin/nash_skript.sh
fi

Запихиваем это дело в крон с любой переодичностью и радуемся.

Комментариев нет:

Отправить комментарий