The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от pinhunt3r emailИскать по авторуВ закладки(??) on 07-Апр-05, 10:36  (MSK)
  Нужно в кроне каждый последний день месяца выполнять один скрипт,
  но прикол в том, что там дни: (0 - 31) , а если в месяце меньше чем 31  
  день, что тогда? Как сделать так, чтоб именно в каждый ПОСЛЕДНИЙ день месяца выполнялся скрипт, а не по определеному числу в месяце... How to?

  

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от allez Искать по авторуВ закладки(ok) on 07-Апр-05, 12:18  (MSK)
>  Нужно в кроне каждый последний день месяца выполнять один скрипт,
>
>  но прикол в том, что там дни: (0 - 31)
>, а если в месяце меньше чем 31
>  день, что тогда? Как сделать так, чтоб именно в каждый
>ПОСЛЕДНИЙ день месяца выполнялся скрипт, а не по определеному числу в
>месяце... How to?
>
>

Воспользуйтесь для этой цели at:
># at 01.05.05 - 1 day
>warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
>at> ls
>at> <EOT>
>job 16 at 2005-04-30 16:06

Как видно из этого примера, была задана дата "первое мая минус один день",
в ответ на что утилита сказала, что работа будет выполнена 30 апреля.
В общем, раз в год через cron можно давать задания at на все месяцы.
Дальше, я думаю, разберетесь сами. Успехов!

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от pinhunt3r emailИскать по авторуВ закладки(??) on 07-Апр-05, 13:06  (MSK)
>>  Нужно в кроне каждый последний день месяца выполнять один скрипт,
>>
>>  но прикол в том, что там дни: (0 - 31)
>>, а если в месяце меньше чем 31
>>  день, что тогда? Как сделать так, чтоб именно в каждый
>>ПОСЛЕДНИЙ день месяца выполнялся скрипт, а не по определеному числу в
>>месяце... How to?
>>
>>
>
>Воспользуйтесь для этой цели at:
>># at 01.05.05 - 1 day
>>warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
>>at> ls
>>at> <EOT>
>>job 16 at 2005-04-30 16:06
>
>Как видно из этого примера, была задана дата "первое мая минус один
>день",
>в ответ на что утилита сказала, что работа будет выполнена 30 апреля.
>
>В общем, раз в год через cron можно давать задания at на
>все месяцы.
>Дальше, я думаю, разберетесь сами. Успехов!

Насколько я понимаю, в debian linux нет комманды "at"... ?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от jonatan Искать по авторуВ закладки(??) on 07-Апр-05, 12:30  (MSK)
Можно выполнять в первый день месяца. Не думаю, что это трагедия.

05 0 1 * * root run-parts /etc/cron.monthly

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от pinhunt3r emailИскать по авторуВ закладки(??) on 07-Апр-05, 13:07  (MSK)
>Можно выполнять в первый день месяца. Не думаю, что это трагедия.
>
>05 0 1 * * root run-parts /etc/cron.monthly

Ну это и так понятно, но мне нужно именно в каждый последний день, типа такое требование у руководства %)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от Nimdar Искать по авторуВ закладки(ok) on 07-Апр-05, 13:19  (MSK)
1. apt-get install at
2. Неужели 5 минут так критично? :) Да и руководству можно сказать, что задание выполняется в последний день месяца ночью, проверять думаю, не станут :)
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от pinhunt3r emailИскать по авторуВ закладки(??) on 07-Апр-05, 14:09  (MSK)
>1. apt-get install at
>2. Неужели 5 минут так критично? :) Да и руководству можно сказать,
>что задание выполняется в последний день месяца ночью, проверять думаю, не
>станут :)

# apt-get install at

Reading Package Lists... Done
Building Dependency Tree... Done
You might want to run `apt-get -f install' to correct these:
The following packages have unmet dependencies:
  libpam-modules: Depends: libdb3 (>= 3.2.9-20) but 3.2.9-16 is to be installed
  webmin-exim: Depends: webmin but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).


Вот такая байда... К сожалению раньше не юзал apt-get...

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от lavr emailИскать по авторуВ закладки on 07-Апр-05, 13:51  (MSK)
>>Можно выполнять в первый день месяца. Не думаю, что это трагедия.
>>
>>05 0 1 * * root run-parts /etc/cron.monthly
>
> Ну это и так понятно, но мне нужно именно в каждый
>последний день, типа такое требование у руководства %)

поиск по фроуму или архивам форума, уже расписывали варианты

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от pinhunt3r emailИскать по авторуВ закладки(??) on 07-Апр-05, 14:10  (MSK)
>>>Можно выполнять в первый день месяца. Не думаю, что это трагедия.
>>>
>>>05 0 1 * * root run-parts /etc/cron.monthly
>>
>> Ну это и так понятно, но мне нужно именно в каждый
>>последний день, типа такое требование у руководства %)
>
>поиск по фроуму или архивам форума, уже расписывали варианты

Был вариант...

30 23 * * * root   if ( `date -v +1d "+%d"` == 01 ) твоя_команда

Но это работает под bsd и не работает под debian

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от lavr emailИскать по авторуВ закладки on 07-Апр-05, 14:25  (MSK)
>>>>Можно выполнять в первый день месяца. Не думаю, что это трагедия.
>>>>
>>>>05 0 1 * * root run-parts /etc/cron.monthly
>>>
>>> Ну это и так понятно, но мне нужно именно в каждый
>>>последний день, типа такое требование у руководства %)
>>
>>поиск по фроуму или архивам форума, уже расписывали варианты
>
> Был вариант...
>
>30 23 * * * root   if ( `date -v
>+1d "+%d"` == 01 ) твоя_команда
>
> Но это работает под bsd и не работает под debian


в ответе были все варианты включая date от bsd и linux + гнусный date (gdate), формат последнего не зависит от OS

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от Agp emailИскать по авторуВ закладки(??) on 07-Апр-05, 13:59  (MSK)
> Ну это и так понятно, но мне нужно именно в каждый
>последний день, типа такое требование у руководства %)

Можно часы поставить на 5 минут вперед. :)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от pinhunt3r emailИскать по авторуВ закладки(??) on 07-Апр-05, 14:05  (MSK)
>> Ну это и так понятно, но мне нужно именно в каждый
>>последний день, типа такое требование у руководства %)
>
>Можно часы поставить на 5 минут вперед. :)

  Нестандартный ход, мне нравится :) но к сожалению там система критична к точному времени и даже синхронизируется с мировым..

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от bakake emailИскать по авторуВ закладки on 08-Апр-05, 18:45  (MSK)
>критична к точному времени и даже синхронизируется с мировым..
Может быть такой изврат спасет отца мирового времени?
[ $(cal | grep -v '[A-Z]' | grep '[0-9]$' | awk '{print $(NF)}' | tail -n 1) -eq $(date +%d) ] && echo 'Yolochka gori!'

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от Muke Искать по авторуВ закладки on 08-Апр-05, 20:47  (MSK)
>  Нужно в кроне каждый последний день месяца выполнять один скрипт,
>
>  но прикол в том, что там дни: (0 - 31)
>, а если в месяце меньше чем 31
>  день, что тогда? Как сделать так, чтоб именно в каждый
>ПОСЛЕДНИЙ день месяца выполнялся скрипт, а не по определеному числу в
>месяце... How to?
>
>

а в чем проблема? 12 месяцев - 12 строк. или надо обязательно в одну уложиться?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от lavr emailИскать по авторуВ закладки on 08-Апр-05, 20:49  (MSK)
>>  Нужно в кроне каждый последний день месяца выполнять один скрипт,
>>
>>  но прикол в том, что там дни: (0 - 31)
>>, а если в месяце меньше чем 31
>>  день, что тогда? Как сделать так, чтоб именно в каждый
>>ПОСЛЕДНИЙ день месяца выполнялся скрипт, а не по определеному числу в
>>месяце... How to?
>>
>>
>
>а в чем проблема? 12 месяцев - 12 строк. или надо обязательно
>в одну уложиться?

угу, и еще учесть високосный год, итого сколько строк? ;)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

15. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от Quarc Искать по авторуВ закладки on 09-Апр-05, 00:00  (MSK)
Такой вариант: cron'у запихать выполнять 28,29,30 и 31 числа скрипт который проверяет текущий день на то является ли он последним и если да то уже дальше выполняет нужный вам скрипт
Вот пример скрипта проверки от нечего делать нацарапал:

#!/bin/sh
DAY=`date +%e`
MONTH=`date +%m`
YEAR=$[`date +%Y`%4]
F=0

if [ $DAY == 31 ]; then
    F=1
else
    if [ $MONTH == "02" ]; then
        if [ $DAY == 29 ]; then
            F=1
        else
            if [ $YEAR != 0 ] && [ $DAY == 28 ]; then
                F=1
            fi
        fi
    fi
    if [ $MONTH == "04" ] || [ $MONTH == "06" ] || [ $MONTH == "09" ] || [ $MONTH == "11" ]; then
        if [ $DAY == 30 ]; then
            F=1;
        fi
    fi
fi

if [ $F == 1 ]; then
#Здесь делаем что надо
echo "last day"
fi

PS:скрипт не критиковать, в шелл скриптинге я полный ноль, хотя этот вроде работает :)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

16. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от pinhunt3r emailИскать по авторуВ закладки(??) on 09-Апр-05, 15:38  (MSK)

Солюшн найден, спасибо народ :)
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

17. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от allez Искать по авторуВ закладки(ok) on 11-Апр-05, 08:01  (MSK)
>
> Солюшн найден, спасибо народ :)

А какое, если не секрет?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

18. "Cron - как выполнить комманду в ПОСЛЕДНИЙ день месяца, а не ..." 
Сообщение от regunkov Искать по авторуВ закладки(ok) on 12-Апр-05, 13:13  (MSK)
>  Нужно в кроне каждый последний день месяца выполнять один скрипт,
>
>  но прикол в том, что там дни: (0 - 31)
>, а если в месяце меньше чем 31
>  день, что тогда? Как сделать так, чтоб именно в каждый
>ПОСЛЕДНИЙ день месяца выполнялся скрипт, а не по определеному числу в
>месяце... How to?
>
>

Внесу свою лепту - в одну строку.
let $((`date +%d -d "tomorrow"`-1)) || echo OK\!
так корректнее
((! ((`date +%d -d "tomorrow"`-1)))) && echo OK\!
ну или
if test ! $((`date +%d -d "tomorrow"`-1)); then echo OK\!; fi

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру