URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5714
[ Назад ]

Исходное сообщение
"уменьшение значения даты в bash"

Отправлено gran , 14-Сен-06 15:47 
Доброе время суток.
Нужно 1 раз в сутки удалять журналы, которые записываются в формате ddddmmdd*****.
Т.е. запускается скрипт 14 числа и стирает все файлы за 13 число.
команда date +%Y%m%d выводит 20060914.
Что нужно сделать, что бы выводила дату на предыдущие сутки?
А если попадает на 1 число месяца корректно вычислялась предыдущее число.

Содержание

Сообщения в этом обсуждении
"уменьшение значения даты в bash"
Отправлено vic , 14-Сен-06 18:16 
>Доброе время суток.
>Нужно 1 раз в сутки удалять журналы, которые записываются в формате ddddmmdd*****.
>
>Т.е. запускается скрипт 14 числа и стирает все файлы за 13 число.
>
>команда date +%Y%m%d выводит 20060914.
>Что нужно сделать, что бы выводила дату на предыдущие сутки?
>А если попадает на 1 число месяца корректно вычислялась предыдущее число.

Вариант:

YESTERDAY=`echo | awk '{ print strftime( "%Y%m%d", systime()-60*60*24); }'`
echo $YESTERDAY


"уменьшение значения даты в bash"
Отправлено gibbon , 14-Сен-06 21:03 
>Доброе время суток.
>Нужно 1 раз в сутки удалять журналы, которые записываются в формате ddddmmdd*****.
>
>Т.е. запускается скрипт 14 числа и стирает все файлы за 13 число.
>
>команда date +%Y%m%d выводит 20060914.
>Что нужно сделать, что бы выводила дату на предыдущие сутки?
>А если попадает на 1 число месяца корректно вычислялась предыдущее число.

date -d yesterday +%Y%m%d

man date сильно способствует ускорению поиска решения :)


"уменьшение значения даты в bash"
Отправлено allez , 15-Сен-06 06:57 
>date -d yesterday +%Y%m%d
>
>man date сильно способствует ускорению поиска решения :)

Ну, а если gran пользуется FreeBSD, то ему поможет чтение man date на предмет
ключа -v. Команда же в этом случае будет выглядеть так:

date -v -1d +%Y%m%d


"уменьшение значения даты в bash"
Отправлено vic , 15-Сен-06 11:42 
>>date -d yesterday +%Y%m%d
>>
>>man date сильно способствует ускорению поиска решения :)
>
>Ну, а если gran пользуется FreeBSD, то ему поможет чтение man date
>на предмет
>ключа -v. Команда же в этом случае будет выглядеть так:
>
>date -v -1d +%Y%m%d

а вот в солярке нет ни -v, ни --date для команды date :)


"уменьшение значения даты в bash"
Отправлено Larky , 15-Сен-06 11:44 
я эту задачу делаю через поиск, чтоб лог был что удалила
cd ${OUT}
find * -ctime +1 >>${RUN}/${LOG}
cd ${RUN}
tar -cvf ${TAR} ${LOG}
cat ${LOG} | while read MYFILE
do MY=`basename $MYFILE`
cp ${OUT}/${MYFILE} ${RUN}
gzip ${MYFILE}
tar -rvf ${TAR} ${MYFILE}.gz
rm ${MYFILE}.gz
rm ${OUT}/${MYFILE}
done
rm ${LOG}



"уменьшение значения даты в bash"
Отправлено Larky , 15-Сен-06 11:47 
У меня только со смещением даты тоже проблема, именно нужно получить значение предыдущей даты на SunOS.
Если кто поможет, заранее спа.



"уменьшение значения даты в bash"
Отправлено vic , 15-Сен-06 12:16 
>У меня только со смещением даты тоже проблема, именно нужно получить значение
>предыдущей даты на SunOS.
>Если кто поможет, заранее спа.

см первый ответ, там где через awk :) должно помочь


"уменьшение значения даты в bash"
Отправлено Larky , 15-Сен-06 12:41 
не, не все так сказочно, отвечает на команду из 1-го поста:
awk: syntax error near line 1
awk: illegal statement near line 1


"уменьшение значения даты в bash"
Отправлено vic , 15-Сен-06 13:16 
>не, не все так сказочно, отвечает на команду из 1-го поста:
>awk: syntax error near line 1
>awk: illegal statement near line 1

верно.. не посмотрел что man awk в линухе открывает man gawk.. в примере используются функции которые являются gnu-расширениями. однако gawk можно установить на солярку.


"уменьшение значения даты в bash"
Отправлено perece , 15-Сен-06 20:58 
>>не, не все так сказочно, отвечает на команду из 1-го поста:
>>awk: syntax error near line 1
>>awk: illegal statement near line 1
>
>верно.. не посмотрел что man awk в линухе открывает man gawk.. в
>примере используются функции которые являются gnu-расширениями. однако gawk можно установить на
>солярку.
а можно просто использовать nawk или /usr/xpg4/bin/awk
за исключением синтаксиса "cmd | getline" и копроцессов - тот же гавк.

\^P^/


"уменьшение значения даты в bash"
Отправлено gran , 19-Сен-06 17:01 
>>Доброе время суток.
>>Нужно 1 раз в сутки удалять журналы, которые записываются в формате ddddmmdd*****.
>>
>>Т.е. запускается скрипт 14 числа и стирает все файлы за 13 число.
>>
>>команда date +%Y%m%d выводит 20060914.
>>Что нужно сделать, что бы выводила дату на предыдущие сутки?
>>А если попадает на 1 число месяца корректно вычислялась предыдущее число.
>
>date -d yesterday +%Y%m%d
>
>man date сильно способствует ускорению поиска решения :)


Спасибо, все получилось.


"уменьшение значения даты в bash"
Отправлено Wulf , 16-Сен-06 16:57 
>Доброе время суток.
>Нужно 1 раз в сутки удалять журналы, которые записываются в формате ddddmmdd*****.
>
>Т.е. запускается скрипт 14 числа и стирает все файлы за 13 число.
>
>команда date +%Y%m%d выводит 20060914.
>Что нужно сделать, что бы выводила дату на предыдущие сутки?
>А если попадает на 1 число месяца корректно вычислялась предыдущее число.

rm -f `perl -e 'use POSIX; print strftime("%Y%m%d", localtime(time-60*60*24));'`*****.


"уменьшение значения даты в bash"
Отправлено Larky , 19-Сен-06 08:47 
Огромное спа!!!
подошло вот это
`perl -e 'use POSIX; print strftime("%m%Y", localtime(time-30*60*60*24));'`



"уменьшение значения даты в bash"
Отправлено kvk , 19-Сен-06 17:57 
еще вариант:
в cron прописать раз в сутки (23:59) date +%Y... > /tmp/YESTARDAY
yestarday=`cat /tmp/YESTERDAY`

"уменьшение значения даты в bash"
Отправлено a1 , 27-Окт-06 13:33 
Самый простой вариант
yestarday=`date -u +%Y%m%d`
Дата будет UTC, наше время бежит вперед ихнего, значит если запустить в час ночи по нашему, то дата получится вчерашняя