Страница 1 из 1
Сравнить время. КАК?
Добавлено: 2012-02-23 8:08:17
ruslanstep1
Привет всем. Нужна ваша консультация как решить проблему.
Есть фаил file.tmp в нем запись типа
эту запись я выдергиваю вот так
Код: Выделить всё
test=`cat file.tmp |grep TTM|awk '{print $1}'`
и есть переменная в скрипте типа этого. Время запуска скрипта .
Как сравнить время запуска скрипта $date_t и время последней записи в файле , таким образом типо если между ними 2 часа разница (то есть последняя запись в файле была 2 часа назад ) тогда выполняется условие об ошибке.
echo "Время последней записи в файле произведен 2 часа назад "|mail -s ERROR
admin@admin.ru
Заранее Спасибо.
Re: Сравнить время. КАК?
Добавлено: 2012-02-23 9:42:21
FiL
1. а где дата? сравнивать только часы - это плохая идея.
2. а зачем читать время из записи? почему не читать время последней модификации файла?
в общем, надо брать `date +%s` и дату последней модификации в таком же виде. И тогда сравнивать проблем нет.
Re: Сравнить время. КАК?
Добавлено: 2012-02-23 10:23:50
GhOsT_MZ
Есть у find интересный функционал для поиска по дате/времени изменения. Можно посмотреть в его сторону, а именно, производить любую запись в файл, а через 2 часа искать его по времени и на основании результата поиска делать что-либо.
Re: Сравнить время. КАК?
Добавлено: 2012-02-23 11:03:56
kpp
FiL писал(а):2. а зачем читать время из записи? почему не читать время последней модификации файла?
Наверное в этот файл еще много чего другого пишется, а нужно знать момент последнего "я живой все ОК".
А вот почему есть только время без даты - не понятно.
Re: Сравнить время. КАК?
Добавлено: 2012-02-23 11:14:20
ruslanstep1
сам файл формируется на день строго. То есть ночью в 12:01 уже формируется новый файл.
В файле несколько записей не относящихся к этой строке.
"а зачем читать время из записи? "
отвечу на эти вопросы так. Время надо смотреть потому что если записи нет значит надо перезапустить прогу которая делает определенный важные для меня функции.И ее зависания приводят к потере данных.
" почему не читать время последней модификации файла?"
Другие проги тоже пишут в этот же файл поэтому мне это не подходит.
Re: Сравнить время. КАК?
Добавлено: 2012-02-23 11:14:53
ruslanstep1
kpp писал(а):FiL писал(а):2. а зачем читать время из записи? почему не читать время последней модификации файла?
Наверное в этот файл еще много чего другого пишется, а нужно знать момент последнего "я живой все ОК".
А вот почему есть только время без даты - не понятно.
Ага именно, так как файл формируется на сутки а потом в 12:00 она бэкапится
Re: Сравнить время. КАК?
Добавлено: 2012-02-23 11:37:44
kpp
Код: Выделить всё
expr `date -j -f "%H:%M:%S" "$время_последнее" "+%s"` - `date -j -f "%H:%M:%S" "$время_контрольное" "+%s"`
В результате кол-во прошедших секунд, разделив на 3600 можно получить кол-во прошедших часов.
Re: Сравнить время. КАК?
Добавлено: 2012-02-23 11:52:35
ruslanstep1
kpp писал(а):Код: Выделить всё
expr `date -j -f "%H:%M:%S" "$время_последнее" "+%s"` - `date -j -f "%H:%M:%S" "$время_контрольное" "+%s"`
В результате кол-во прошедших секунд, разделив на 3600 можно получить кол-во прошедших часов.
сори может сразу не написал это нужно в bash скрипте и предложенный вариант не работает или я просто не то делаю
Re: Сравнить время. КАК?
Добавлено: 2012-02-23 11:55:12
kpp
Если в вопросе не указана ОС, подразумевается FreeBSD.
На FreeBSD приведенный выше код работает

Re: Сравнить время. КАК?
Добавлено: 2012-02-23 11:58:20
ruslanstep1
kpp писал(а):Если в вопросе не указана ОС, подразумевается FreeBSD.
На FreeBSD приведенный выше код работает

ОС AIX и ubuntu

Re: Сравнить время. КАК?
Добавлено: 2012-02-23 12:04:07
kpp
Тогда так:
Код: Выделить всё
expr `date -d "$время_последнее" +%s` - `date -d "$время_контрольное" +%s`
Re: Сравнить время. КАК?
Добавлено: 2012-02-23 14:57:46
ruslanstep1
kpp писал(а):Тогда так:
Код: Выделить всё
expr `date -d "$время_последнее" +%s` - `date -d "$время_контрольное" +%s`
Все гуд работает в Ubunte , а вот в AIX у date нет опции -d
Есть еще какой нить способ
Re: Сравнить время. КАК?
Добавлено: 2012-02-24 10:57:57
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
Re: Сравнить время. КАК?
Добавлено: 2012-02-24 21:19:54
FiL
ruslanstep1 писал(а):сам файл формируется на день строго. То есть ночью в 12:01 уже формируется новый файл.
В файле несколько записей не относящихся к этой строке.
"а зачем читать время из записи? "
отвечу на эти вопросы так. Время надо смотреть потому что если записи нет значит надо перезапустить прогу которая делает определенный важные для меня функции.И ее зависания приводят к потере данных.
" почему не читать время последней модификации файла?"
Другие проги тоже пишут в этот же файл поэтому мне это не подходит.
Ну тогда пишите время в файл в виде секунд с начала эпохи. Проще сравнивать будет.
Re: Сравнить время. КАК?
Добавлено: 2012-02-24 22:13:32
ruslanstep1
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
Спасибо чутка поправил под себя и все норма получилась