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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Запуск приложения при старте системы с таймаутом запуска  (Прочитано 7078 раз)

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

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Вы отлавливаете момент изменения времени? Тогда так
Код: (bash) [Выделить]
unset t{1,2}
while [ -z "${t2}" ] || [ $diff -le 2 ]; do
Но это не совсем правильно: можно опоздать или проскочить… Логически правильнее привязываться к systemd-timesyncd.service и делать автостарт через сервис systemd c параметром
Код: (html5) [Выделить]
After=systemd-timesyncd.service
Пользователь добавил сообщение 13 Августа 2017, 18:21:27:
Или хотя бы по разнице тайм-зоны или различию LocalTime c RTC. Но это «костыли» — надо правильно настроить системное время.
« Последнее редактирование: 13 Августа 2017, 18:22:05 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Вот придумал вариант чуть короче
Код: (bash) [Выделить]
while sleep 1
do t1=$(date "+%s")
[[ $(($t1-${t2:-$t1})) =~ ^(0|1|2)$ ]] || break
t2=$t1
done
echo START_PROGRAMM
(работает)

Логически правильнее привязываться к systemd-timesyncd.service
Или мониторить syslog на появление сообщения ntp об обновлении времени, но такой вариант будет сильнее грузить процессор

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
придумал вариант
Почему Вы не хотите условие привязывать к while как это задумано, а запускаете бесконечный цикл, а потом его ломаете? 
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Да так и хотел, но это получалось длинее.

Пользователь добавил сообщение 13 Августа 2017, 18:42:46:
А вот получилось короче:
Код: (bash) [Выделить]
while [[ ${d:-0} =~ ^(0|1|2)$ ]]
do
    t1=$(date "+%s")
    d=$((t1-${t2:-$t1}))
    t2=$t1
    sleep 1
done
echo START_PROGRAMM
« Последнее редактирование: 13 Августа 2017, 18:42:46 от renzrv »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
получалось длинее.
Код: (bash) [Выделить]
unset t{1,2}
while [ $((${t1:=$(date "+%s")}-${t2:-$t1})) -le 2 ]; do
    sleep 1
    t2=$t1
    t1=$(date "+%s")
done
ровно столько же. (про ${var:-} здорово что напомнили)
« Последнее редактирование: 13 Августа 2017, 19:05:21 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
В вашем варианте цикл не обрывается если время перевели назад

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Тут еще проблема в том, что время в нашем регионе решением местных властей сдвинуто на час назад, а на серверах времени
Серверам времени на ваше локальное время глубоко плевать.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
В биосе время редактировать нежелательно, так как параллельно на компьютере установлена Windows, также активно используемая.
Самое смешное, что, что ТС нашёл и себе и другим участникам ведро геммороя, которое легко решается первой же ссылкой поиска по форуму

Ах, да. Нужно ещё привести timezode в соответсвие с временной зоной
dpkg-reconfigure tzdata
« Последнее редактирование: 14 Августа 2017, 07:17:41 от fisher74 »

Оффлайн darwetra

  • Автор темы
  • Участник
  • *
  • Сообщений: 131
    • Просмотр профиля
Цитата: darwetra от 12 Август 2017, 16:57:45

    В биосе время редактировать нежелательно, так как параллельно на компьютере установлена Windows, также активно используемая.

Самое смешное, что, что ТС нашёл и себе и другим участникам ведро геммороя, которое легко решается первой же ссылкой поиска по форуму
Я уже так давно делал и все было хорошо. Проблема всплыла где-то месяц назад, видимо, после очередного обновления системы. И в Ubuntu, и в Windows часы продолжали работать по прежнему нормально, единственная проблема началась с Variety.  renzrv помог мне решить этот вопрос максимально эффективно и логично, причем без вмешательства в хорошо работающую систему, в чем я ему и благодарен.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
до того, как Ubuntu выставила верное время
Это по Вашему нормально работающая система?
Система должна только корректировать ошибку работы RTC материнской платы (мсек), а не судорожно ловить таймсервера и править локальное время на час-другой. Если это так происходит, значит нужно устранять ЭТУ проблему а не искать обходные пути.
То что Вы сделали - это костыль. И renzrv помог Вам глубоко забить его в больную систему, в то самое место, где должна работать Ваша голова.

Оффлайн darwetra

  • Автор темы
  • Участник
  • *
  • Сообщений: 131
    • Просмотр профиля
в то самое место, где должна работать Ваша голова.
Э-э..! А вот и нет! Не должна моя голова работать тут, моей голове есть другие точки приложения. Для меня достаточно работающей системы. Кстати, вовсе не факт, что происходит что-то не то и не так в системе. Я ведь не знаю, что реально послужило причиной сбоя. Засбоила визуально только Variety, теперь все работает. Да, я могу, конечно же, потратить год-другой на изучение системных процессов в линуксе, но я специалист в другой области и эти затраты времени несомненно повлияют на мою основную квалификацию, так как основной моей работе придется уделять меньше внимания. Пытаясь сделать таймаут я старался автоматизировать свою работу с компьютером, понимая при этом, что это костыль, связывающий какие-то нестыковки в системе. Мне был предложен вариант похожий, но лучший и теперь все работает как надо. Что же не так? Ведь меня как пользователя все устраивает.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Что же не так? Ведь меня как пользователя все устраивает.
Это глубоко филосовский вопрос и напрямую зависит от жизненной позиции: устранить проблему или её обойти.
Что касается кокретной ситуации то Вы решили лишь частный случай проявления проблемы и где она «вылезет/-ает» ещё — неизвестно. Может все будет хорошо, а может и нет…
вовсе не факт, что происходит что-то не то и не так в системе.
Для этого Вам было предложено сделать диагностику
Покажитеtimedatectl status
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн darwetra

  • Автор темы
  • Участник
  • *
  • Сообщений: 131
    • Просмотр профиля
Вот:
arh@arh-P35-S3:~$ timedatectl status
      Local time: Пн 2017-08-14 10:16:15 +04
  Universal time: Пн 2017-08-14 06:16:15 UTC
        RTC time: Пн 2017-08-14 11:14:19
       Time zone: Europe/Samara (+04, +0400)
 Network time on: yes
NTP synchronized: no
 RTC in local TZ: yes

Warning: The system is configured to read the RTC time in the local time zone.
         This mode can not be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.
         If at all possible, use RTC in UTC by calling
         'timedatectl set-local-rtc 0'.
arh@arh-P35-S3:~$
Нахожусь я не в Самаре, а в Саратове, при указании местоположения Саратов время появляется неверное. И Windows ведет себя точно также. Это с того самого момента, когда у нас перевели часы местным указом.
« Последнее редактирование: 14 Августа 2017, 09:22:16 от darwetra »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Видите что время разное и надо в БИОС его поправить?
Код: (bash) [Выделить]
sudo hwclock --localtime --systohc
Цитата: https://help.ubuntu.ru/wiki/системное_время_windows_и_ubuntu
Если
Код: (html55) [Выделить]
RTC in local TZ: yesТо значит локальное (то есть что в Linux, то и в Биосе и так же будет в Windows).
Чтобы Линукс при выключении не переводил часы на »+0», делаем
Код: (bash) [Выделить]
timedatectl set-local-rtc 1
« Последнее редактирование: 14 Августа 2017, 09:39:31 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Не понял, если честно.
Ну да, перевели наш регион на другой часовой пояс. Пока в tzdata не поправили, да, можно было пользоваться Самарской таймзоной... или вообще просто зоной UTC+4
Сейчас в tzdata всё исправили, потому можно и Саратов выставить.
А несовпадения - значит в винде неправильно таймзона выставлена. Выставьте там Астраханскую или так же Самарскую и всё выровнится.

Если уж системы живут на одном железе, то и работать они должны синхронно, тем более все инструменты для этого есть.
Или Windows старенькая? Но и там можно найти ПРАВИЛЬНОЕ решение.
« Последнее редактирование: 14 Августа 2017, 09:52:29 от fisher74 »

 

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