Как запустить crontab в последнюю секунду месяца? - PullRequest
2 голосов
/ 27 марта 2011

Мне нужен crontab для запуска скрипта, который передает информацию из таблицы в mysql в другую таблицу в последнюю секунду месяца. (Последняя секунда последнего дня месяца).

Каким будет выполнение crontab для этого?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 27 марта 2011

Не уверен, что это можно сделать общим способом, поскольку последний день месяца меняется, и, насколько я вижу, синтаксис crontab ничего не предлагает для этого варианта использования.

Возможно, вам придется найти правильную дату для себя и добавить отдельные задания (с полными датами и временем, то есть 12 в год) в crontab.

Но зачем тебе это вообще нужно? Это звучит как «запах», потому что вы не можете рассчитывать на то, что какая-либо работа будет закончена до конца месяца, если вы начнете ее в последнюю секунду. Не будет ли легче выполнять его в 0:00 каждый первый день месяца?

Украдено у этого ответа при сбое сервера:

0 0 1 * * / usr / bin / foo

0 голосов
/ 02 апреля 2011

Это даст вам именно то, что вы ищете (с точностью до минуты, а не второй). Просто настройте время crontab, которое я упоминаю, как 59 23 (http://sudobash.net/?p=424)

Крон:

2 0 * * * /usr/bin/last-day-of-the-month.sh

Сценарий:

#!/usr/bin/bash
# last-day-of-the-month.sh
# By: Scott Rowley
# http://www.sudobash.net/
#########################################

TODAY=`/usr/local/bin/date +%d`
TOMORROW=`/usr/local/bin/date +%d -d "1 day"`

# See if tomorrow's day is less than today's
if [ $TOMORROW -lt $TODAY ]
 then
  echo "Today is the last day of the month, running code..."
  /run/your/code
fi

exit 
...