Сравнить время. КАК?

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
ruslanstep1
мл. сержант
Сообщения: 92
Зарегистрирован: 2010-04-14 11:40:46

Сравнить время. КАК?

Непрочитанное сообщение ruslanstep1 » 2012-02-23 8:08:17

Привет всем. Нужна ваша консультация как решить проблему.
Есть фаил file.tmp в нем запись типа

Код: Выделить всё

22:03:45 TTM я живой все ОК
эту запись я выдергиваю вот так

Код: Выделить всё

test=`cat file.tmp |grep TTM|awk '{print $1}'`
и есть переменная в скрипте типа этого. Время запуска скрипта .

Код: Выделить всё

date_t=`date +'%T'`


Как сравнить время запуска скрипта $date_t и время последней записи в файле , таким образом типо если между ними 2 часа разница (то есть последняя запись в файле была 2 часа назад ) тогда выполняется условие об ошибке.
echo "Время последней записи в файле произведен 2 часа назад "|mail -s ERROR admin@admin.ru
Заранее Спасибо.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

FiL
ст. лейтенант
Сообщения: 1375
Зарегистрирован: 2010-02-05 0:21:40

Re: Сравнить время. КАК?

Непрочитанное сообщение FiL » 2012-02-23 9:42:21

1. а где дата? сравнивать только часы - это плохая идея.
2. а зачем читать время из записи? почему не читать время последней модификации файла?

в общем, надо брать `date +%s` и дату последней модификации в таком же виде. И тогда сравнивать проблем нет.

GhOsT_MZ
лейтенант
Сообщения: 662
Зарегистрирован: 2011-04-25 11:40:35
Контактная информация:

Re: Сравнить время. КАК?

Непрочитанное сообщение GhOsT_MZ » 2012-02-23 10:23:50

Есть у find интересный функционал для поиска по дате/времени изменения. Можно посмотреть в его сторону, а именно, производить любую запись в файл, а через 2 часа искать его по времени и на основании результата поиска делать что-либо.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Сравнить время. КАК?

Непрочитанное сообщение kpp » 2012-02-23 11:03:56

FiL писал(а):2. а зачем читать время из записи? почему не читать время последней модификации файла?
Наверное в этот файл еще много чего другого пишется, а нужно знать момент последнего "я живой все ОК".
А вот почему есть только время без даты - не понятно.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

ruslanstep1
мл. сержант
Сообщения: 92
Зарегистрирован: 2010-04-14 11:40:46

Re: Сравнить время. КАК?

Непрочитанное сообщение ruslanstep1 » 2012-02-23 11:14:20

сам файл формируется на день строго. То есть ночью в 12:01 уже формируется новый файл.
В файле несколько записей не относящихся к этой строке.
"а зачем читать время из записи? "
отвечу на эти вопросы так. Время надо смотреть потому что если записи нет значит надо перезапустить прогу которая делает определенный важные для меня функции.И ее зависания приводят к потере данных.
" почему не читать время последней модификации файла?"
Другие проги тоже пишут в этот же файл поэтому мне это не подходит.

ruslanstep1
мл. сержант
Сообщения: 92
Зарегистрирован: 2010-04-14 11:40:46

Re: Сравнить время. КАК?

Непрочитанное сообщение ruslanstep1 » 2012-02-23 11:14:53

kpp писал(а):
FiL писал(а):2. а зачем читать время из записи? почему не читать время последней модификации файла?
Наверное в этот файл еще много чего другого пишется, а нужно знать момент последнего "я живой все ОК".
А вот почему есть только время без даты - не понятно.
Ага именно, так как файл формируется на сутки а потом в 12:00 она бэкапится

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Сравнить время. КАК?

Непрочитанное сообщение kpp » 2012-02-23 11:37:44

Код: Выделить всё

expr `date -j -f "%H:%M:%S" "$время_последнее" "+%s"` - `date -j -f "%H:%M:%S" "$время_контрольное" "+%s"`
В результате кол-во прошедших секунд, разделив на 3600 можно получить кол-во прошедших часов.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

ruslanstep1
мл. сержант
Сообщения: 92
Зарегистрирован: 2010-04-14 11:40:46

Re: Сравнить время. КАК?

Непрочитанное сообщение ruslanstep1 » 2012-02-23 11:52:35

kpp писал(а):

Код: Выделить всё

expr `date -j -f "%H:%M:%S" "$время_последнее" "+%s"` - `date -j -f "%H:%M:%S" "$время_контрольное" "+%s"`
В результате кол-во прошедших секунд, разделив на 3600 можно получить кол-во прошедших часов.
сори может сразу не написал это нужно в bash скрипте и предложенный вариант не работает или я просто не то делаю

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Сравнить время. КАК?

Непрочитанное сообщение kpp » 2012-02-23 11:55:12

Если в вопросе не указана ОС, подразумевается FreeBSD.
На FreeBSD приведенный выше код работает ;)
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

ruslanstep1
мл. сержант
Сообщения: 92
Зарегистрирован: 2010-04-14 11:40:46

Re: Сравнить время. КАК?

Непрочитанное сообщение ruslanstep1 » 2012-02-23 11:58:20

kpp писал(а):Если в вопросе не указана ОС, подразумевается FreeBSD.
На FreeBSD приведенный выше код работает ;)
ОС AIX и ubuntu :smile:

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Сравнить время. КАК?

Непрочитанное сообщение kpp » 2012-02-23 12:04:07

Тогда так:

Код: Выделить всё

expr `date -d "$время_последнее" +%s` - `date -d "$время_контрольное" +%s`
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

ruslanstep1
мл. сержант
Сообщения: 92
Зарегистрирован: 2010-04-14 11:40:46

Re: Сравнить время. КАК?

Непрочитанное сообщение ruslanstep1 » 2012-02-23 14:57:46

kpp писал(а):Тогда так:

Код: Выделить всё

expr `date -d "$время_последнее" +%s` - `date -d "$время_контрольное" +%s`
Все гуд работает в Ubunte , а вот в AIX у date нет опции -d
Есть еще какой нить способ

Аватара пользователя
Alvares
прапорщик
Сообщения: 485
Зарегистрирован: 2008-07-10 12:48:08
Откуда: Воронеж
Контактная информация:

Re: Сравнить время. КАК?

Непрочитанное сообщение Alvares » 2012-02-24 10:57:57

У нас в линухе такая оповещалка стоит. Если последняя запись в файле старше 10 минут, кидать мессагу на экран.
Может, получится что переделать под себя.

Код: Выделить всё

#!/bin/sh
A=`date | awk '{ print $4 }' | awk -F: ' { print expr $1 * 60 + $2 }'`
B=`ls -l /path/to/file| awk '{ print $8 }' | awk -F:
' { print expr $1 * 60 + $2 + 10 }'`
if [ $A -gt $B ] ; then
 echo "Проверьте службу" | smbclient -M имя_компа
fi
Бог создал людей сильными и слабыми. Сэмюэл Кольт сделал их равными...

FiL
ст. лейтенант
Сообщения: 1375
Зарегистрирован: 2010-02-05 0:21:40

Re: Сравнить время. КАК?

Непрочитанное сообщение FiL » 2012-02-24 21:19:54

ruslanstep1 писал(а):сам файл формируется на день строго. То есть ночью в 12:01 уже формируется новый файл.
В файле несколько записей не относящихся к этой строке.
"а зачем читать время из записи? "
отвечу на эти вопросы так. Время надо смотреть потому что если записи нет значит надо перезапустить прогу которая делает определенный важные для меня функции.И ее зависания приводят к потере данных.
" почему не читать время последней модификации файла?"
Другие проги тоже пишут в этот же файл поэтому мне это не подходит.
Ну тогда пишите время в файл в виде секунд с начала эпохи. Проще сравнивать будет.

ruslanstep1
мл. сержант
Сообщения: 92
Зарегистрирован: 2010-04-14 11:40:46

Re: Сравнить время. КАК?

Непрочитанное сообщение ruslanstep1 » 2012-02-24 22:13:32

Alvares писал(а):У нас в линухе такая оповещалка стоит. Если последняя запись в файле старше 10 минут, кидать мессагу на экран.
Может, получится что переделать под себя.

Код: Выделить всё

#!/bin/sh
A=`date | awk '{ print $4 }' | awk -F: ' { print expr $1 * 60 + $2 }'`
B=`ls -l /path/to/file| awk '{ print $8 }' | awk -F:
' { print expr $1 * 60 + $2 + 10 }'`
if [ $A -gt $B ] ; then
 echo "Проверьте службу" | smbclient -M имя_компа
fi
Спасибо чутка поправил под себя и все норма получилась