The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Как задать последний день прошлого месяца?, !*! nastr, 27-Июн-09, 11:55  [смотреть все]
На удалённом сервере каждый час создаётся новый файл, который именуется так - filename_$(date "+%Y_%m_%d_%H")_00_00.cvs, в кроне установлен скрипт который запскается в 01 минуту каждый час, и крирует по ftp файл за предидущий час. Задача казалось бы не сложная.
задаю переменные для указания что копировать по ftp:
if [ `date "+%H"` -eq 00 ]
then
var=filename_$(date "+%Y_%m")_$(expr $(date "+%d") - 1)_23_00_00.cvs
else
var=filename_$(date "+%Y_%m_d")_$(expr $(date "+%H") - 1)_00_00.cvs
fi
Но как быть если к примеру сегодня 01 число?
Ведь $(expr $(date "+%d") - 1) выдаст мне 00, а мне жунно к примеру 31 (количество дней в прошлом месяце).
Как задать предидущий день, час, не по средствам функции expr, вычитания единицы?
  • Как задать последний день прошлого месяца?, !*! Andrey, 21:47 , 27-Июн-09 (1)
    если сегодня 1-е то можно использовать
    date -d yesterday +%d
  • Как задать последний день прошлого месяца?, !*! Sarge, 23:02 , 27-Июн-09 (2)
    вообще вся задача решается с помощью добавления к date параметра:
    -d "-1 hour"
  • Как задать последний день прошлого месяца?, !*! allez, 17:49 , 28-Июн-09 (3)
    >Как задать предидущий день, час, не по средствам функции expr, вычитания единицы?

    А какая ОС на сервере установлена? Если Linux, то приведенные выше советы сработают,
    если же что-то другое - то очень даже могут и не сработать.

    P. S. Сообщать о том, какая ОС используется - элементарное правило хорошего тона. ;-)

    • Как задать последний день прошлого месяца?, !*! nastr, 16:51 , 30-Июн-09 (5)
      >А какая ОС на сервере установлена? Если Linux, то приведенные выше советы
      >сработают,
      >если же что-то другое - то очень даже могут и не сработать.
      >P. S. Сообщать о том, какая ОС используется - элементарное правило хорошего
      >тона. ;-)

      Спасибо большое за совет.
      На одном сервере под Win2003, установлен cygwin, на нём date -d работает нормально.
      Остальные сервера работают под SunOS там date -d не работает.
      Пока что на срверах под SunOS использую слудущую конструкцию скрипта
      g=0; while true
      do
      if [ $(date "+%M") -eq 00 ] && [ $g -ne 1 ] && [ $(date "+%H") -ne 00 ]
      then
      sleep 3
      newstr=$(tail -1 perf_VoMSRechargeExt_`date "+%Y_%m_%d_$(expr $(date "+%H") - 1)"`*.csv)
      case $newstr in
      $str);;
      *) echo $newstr;;
      esac
      g=1
      sleep 13
      elif [ $(date "+%H") -eq 00 ] && [ $g -ne 1 ] && [ $(date "+%M") -eq 00 ]
      then
      sleep 3
      newstr=$(tail -1 perf_VoMSRechargeExt_`date "+%Y_%m_$(expr $(date "+%d") - 1)"_23`*.csv)
      case $newstr in
      $str);;
      *) echo $newstr;;
      esac
      g=1
      sleep 13
      else
      newstr=$(tail -1 perf_VoMSRechargeExt_`date "+%Y_%m_%d_%H"`*.csv)
      case $newstr in
      $str);;
      *) echo $newstr
      str=$newstr;;
      esac
      fi
      if [ $(date "+%M") -eq 01 ] && [ $(date "+%S") -lt 05 ]
      then
      g=0
      fi
      done

  • Как задать последний день прошлого месяца?, !*! Andrey Mitrofanov, 15:22 , 30-Июн-09 (4)
    1// К тому вопросу, что в теме: показать дату дня перед первым числом сего месяца:

    $ date -d "`date +%Y-%m`-01 -1 day" +%F
    2009-05-31
    $ date +%F
    2009-06-30
    $ _

    - без предположения, что сегодя - первое. И год тоже "переносится":

    $ date -d "`date -d 2009-01-10 +%Y-%m`-01 -1 day" +%F
    2008-12-31
    $ _

    2// По поводу "только в линуксе", на самом деле "в date из GNU coreutils".

    • Как задать последний день прошлого месяца?, !*! allez, 17:18 , 30-Июн-09 (6)
      >2// По поводу "только в линуксе", на самом деле "в date из GNU coreutils".

      Я совсем не уверен в том, что вопрошающий в курсе таких тонкостей,
      как существование GNU-, BSD- и прочих версий различных утилит.
      Оттого и не мудрствовал лукаво, ибо GNU coreutils практически только
      в Линуксе по умолчанию и устанавливаются. :-)




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

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