Задание Cron для запуска в последний день месяца - PullRequest
79 голосов
/ 26 мая 2011

Мне нужно создать задание cron, которое будет запускаться каждый последний день месяца. Я создам его из cpanel.

Любая помощь приветствуется. Спасибо

Ответы [ 14 ]

4 голосов
/ 26 мая 2011
00 23 * * * [[ $(date +'%d') -eq $(cal | awk '!/^$/{ print $NF }' | tail -1) ]] && job

Ознакомьтесь с вопросом на форуме unix.com.

3 голосов
/ 29 мая 2011

Вы можете просто соединить все ответы в одну строку cron и использовать только команду date.

Просто проверьте разницу между днем ​​месяца, который сегодня и будет завтра:

0 23 * * * root [ $(expr $(date +\%d -d '1 days') - $(date +\%d)  ) -le 0 ]  && echo true

Если эта разница меньше 0, это означает, что мы меняем месяц и наступает последний день месяца.

2 голосов
/ 12 сентября 2018
55 23 28-31 * * echo "[ $(date -d +1day +%d) -eq 1 ] && my.sh" | /bin/bash 
2 голосов
/ 25 апреля 2014

А как насчет этого?

изменить пользователя .bashprofile добавив:

export LAST_DAY_OF_MONTH=$(cal | awk '!/^$/{ print $NF }' | tail -1)

Затем добавить эту запись в crontab:

mm hh * * 1-7 [[ $(date +'%d') -eq $LAST_DAY_OF_MONTH ]] && /absolutepath/myscript.sh
...