Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Как сравнить время в bash ?  (Прочитано 12002 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Как сравнить время в bash ?
« : 09 Июня 2010, 16:12:51 »
Есть скрипт, который создает файлик, если пропадает пинг к оборудованию.
Что надо дописать в скрипте, чтоб он проверял время создания того файлика с текущем временем системы, и ,скажем, если разница в один час -  отправлялось сообщение на имейл?

п.с. Когда пинг появляется - файлик удаляется, и тогда сравнивать время не надо.

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5589
  • Все по палатам!
    • Просмотр профиля
Re: Как сравнить время в bash ?
« Ответ #1 : 09 Июня 2010, 17:57:41 »
Можно наверно командой date взять время и сравнить с временем файла в одинаковом формате
date -r file +%Y%m%d%H%M%S%N
date +%Y%m%d%H%M%S%N
и сравнить - какая строка больше
Извините, я все еще учусь

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Как сравнить время в bash ?
« Ответ #2 : 09 Июня 2010, 21:04:15 »
Наверное как то так:
file=file.flag
to=mail@example.net
text="Хайдук (("
[ -e "$file" ] && [ $(($(date +%s) - $(stat -c %Y $file))) -gt 3600 ] && mail $to <<< $text

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Как сравнить время в bash ?
« Ответ #3 : 10 Июня 2010, 01:08:35 »
Можно наверно командой date взять время и сравнить с временем файла в одинаковом формате
date -r file +%Y%m%d%H%M%S%N
date +%Y%m%d%H%M%S%N
и сравнить - какая строка больше

Ну именно как сравнить я и спрашивал!

Оффлайн [DarkNet]Alpha

  • Активист
  • *
  • Сообщений: 987
  • Эмоциональный эльдар
    • Просмотр профиля
    • EBM-радио
Re: Как сравнить время в bash ?
« Ответ #4 : 10 Июня 2010, 01:13:43 »
t1=(первое время)
t2=(второе время)
if [ "$t1" != "$t2" ]
then
    что-то 1
    что-то 2
    ...
else
    что-то N
    ...
fi
« Последнее редактирование: 10 Июня 2010, 01:17:23 от DarknetAlpha »

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Как сравнить время в bash ?
« Ответ #5 : 10 Июня 2010, 01:34:19 »
Наверное как то так:
file=file.flag
to=mail@example.net
text="Хайдук (("
[ -e "$file" ] && [ $(($(date +%s) - $(stat -c %Y $file))) -gt 3600 ] && mail $to <<< $text

Спасибки!


А что скажете на этот вариант?

if [ -e `find /path/to/your/folder -name yur_file.txt -amin 60` ]
then
fi


После чего создается новый файл, если пинг так и не появился.. и опять проверяется время жизни файла!

Пользователь решил продолжить мысль 10 Июня 2010, 01:36:34:
t1=(первое время)
t2=(второе время)
if [ "$t1" != "$t2" ]
then
    что-то 1
    что-то 2
    ...
else
    что-то N
    ...
fi


 :) Мне надо условие не просто что время создания файла и системное время были разные... мне надо именно на определенный промежуток времени, к примеру, на час разница.. тогда смс-напоминание.. что все лежит, и надо что-то делать.
« Последнее редактирование: 10 Июня 2010, 01:36:34 от TrEK »

Оффлайн [DarkNet]Alpha

  • Активист
  • *
  • Сообщений: 987
  • Эмоциональный эльдар
    • Просмотр профиля
    • EBM-радио
Re: Как сравнить время в bash ?
« Ответ #6 : 10 Июня 2010, 01:39:14 »
Можно пойти через жопу и при падении чего-либо запускать таймер. Хотя, мне кажется, лучше уведомлять сразу.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Как сравнить время в bash ?
« Ответ #7 : 10 Июня 2010, 01:47:38 »
Можно пойти через жопу и при падении чего-либо запускать таймер. Хотя, мне кажется, лучше уведомлять сразу.

ВОт мой рабочий скрипт:


(Нажмите, чтобы показать/скрыть)


Но тут : одно смс когда падает, одно смс - когда поднимается! Но если упадет на долго... надо ведь напомнить через некоторое время, что "мол не починили еще, давайте делайте что-нибудь!".

Предупреждение намберван: мат!!!
-- Владимир Николаевич
« Последнее редактирование: 10 Июня 2010, 11:00:41 от Владимир Николаевич »

Оффлайн [DarkNet]Alpha

  • Активист
  • *
  • Сообщений: 987
  • Эмоциональный эльдар
    • Просмотр профиля
    • EBM-радио
Re: Как сравнить время в bash ?
« Ответ #8 : 10 Июня 2010, 01:53:17 »
Можно в крон завести отправку смс, а при подъёме кронтаб чистить. Но тут уж извини, кодом не помогу, ибо в кроне не разбирался особо.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Как сравнить время в bash ?
« Ответ #9 : 10 Июня 2010, 01:58:49 »
у меян из крона скрипт каждые 5 минут запускается!

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5589
  • Все по палатам!
    • Просмотр профиля
Re: Как сравнить время в bash ?
« Ответ #10 : 10 Июня 2010, 13:03:56 »
В баше вроде арифметика есть. Возьмите даты отдельно по минутам и часам и вычисляйте что требуется. Ну или на С напишите маленькую прогу (уже давно бы сделали).
Извините, я все еще учусь

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Как сравнить время в bash ?
« Ответ #11 : 10 Июня 2010, 13:26:33 »
C не знаю.. а вот скрипт дописал:

(Нажмите, чтобы показать/скрыть)

Пользователь решил продолжить мысль 10 Июня 2010, 12:09:25:
а весь предыдущий код можно заменить простеньким:


(Нажмите, чтобы показать/скрыть)

Пользователь решил продолжить мысль 10 Июня 2010, 16:25:37:
Я думаю все последующие посты будут уже здесь - https://forum.ubuntu.ru/index.php?topic=97625.75
Так как там полный скрипт смс-алярминга + доточеные циклы проверок, и повторных напоминаний.
« Последнее редактирование: 10 Июня 2010, 16:25:37 от TrEK »

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Как сравнить время в bash ?
« Ответ #12 : 10 Июня 2010, 17:06:19 »
ну так закройте тогда эту тему ;)

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Как сравнить время в bash ?
« Ответ #13 : 10 Июня 2010, 21:46:43 »
ну так закройте тогда эту тему ;)

Хорошо!

 

Страница сгенерирована за 0.262 секунд. Запросов: 25.