Запуск задания cron в последний день месяца

14.03.2010 12:08 / Артём Волк / 1119 просмотров / ...

Стандартный cron не позволяет создать такое расписание, чтобы задание выполнялось только в конце месяца (именно в последний день месяца максимально близко к полуночи, а не в первый день следующего месяца). Одно из решений было найдено на форуме и слегка модицифировано.

Первое, что нужно сделать -- создать запись в crontab-файле (в данном примере в системном), чтобы небольшой shell-скрипт выполнялся каждую ночь за минуту до полуночи:

59 23   * * *   someuser      <path to script>/monthly.sh

Сам скрипт monthly.sh:

#!/bin/bash

NAME="<SOME FRIENDLY NAME FOR SYSLOG>"
TODAY=`/bin/date +%d`
TOMORROW=`/bin/date +%d -d "1 day"`

/usr/bin/logger -t $NAME "Starting monthly maintaince..."

# See if tomorrow's day is less than today's
if [ $TOMORROW -lt $TODAY ]; then
	/usr/bin/logger -t $NAME "Today is the last day of the month!"
	...
	...
	...
else
	/usr/bin/logger -t $NAME "Today is NOT the last day of the month!"
fi