Запуск скрипта
-
Добрый день! Все мы знаем, что на RasPi нет часов реального времени, и синхронизация времени происходит по интернету. Так вот, нужно сделать так, чтобы запускался скрипт после того, как произойдёт эта синхронизация. Кто-нибудь сталкивался с такой необходимостью? Как это сделать? куда копать?
-
Ну, например, здесь есть информация о синхронизации. Сформулируйте свой вопрос более понятно.
-
djbond07 (2016-06-17 17:49:48):Добрый день! Все мы знаем, что на RasPi нет часов реального времени, и синхронизация времени происходит по интернету. Так вот, нужно сделать так, чтобы запускался скрипт после того, как произойдёт эта синхронизация. Кто-нибудь сталкивался с такой необходимостью? Как это сделать? куда копать?
Существует несколько вариантов как запустить программы при автостарте в Raspbian:Init-Script автостарт
автостарт с rc.local
LXDE автостарт
автостарт с .desktop файлом
Cronjob для автостартЭти способы порой отличаются не только тем, как там запускаются программы, но ещё и когда…
Поищите по этим ключевым словам.
-
Если предположить что синхронизация происходит через запуск ntpd, то его (сам исполняемый файл) можно заменить на скрипт, который сначала сделает синхронизацию а потом запустит твой скрипт.
Или, если задание на синхронизацию записано в cron, изменить это задание таким образом, чтобы вызывался скрипт который сначала вызывает ntpd для синхронизации а потом вызывает твой скрипт. В этом случае твой скрипт будет вызываться сразу после синхронизации.
Все это выглядит довольно костыльно, но я не знаю способов привязать запуск скрипта к событию синхронизации времени.
-
Добрый день! В общем покопался во всём этом, решил проблему. По идее должно всё работать и без танцев с бубном, потому что в моих скриптах уже есть строчка вначале:
RQUIRED START: $remote_fs $network $time
И именно $time отвечает за то, что синхронизация времени прошла успешно, возвращает 1 и всё, поехали скрипты мои. Но по каким-то причинам в моей системе этого не происходило. Что-то мешает, не могу понять что.
Решил проблему так. В само тело скрипта перед непосредственным запуском демона вставил кодuntil ntpq -np | grep -q ‘^*’;
do
echo «NTP not ready… wait»
sleep 30
doneСоответственно мы ждём, пока у нас служба ntp вернёт сообщение о успешной синхронизации, и после этого идём в основное тело моего демона. Очень коряво, нужно вместо * написать фрагмент сообщения, чтобы исключить вероятность запуска службы после сообщения о какой-нибудь ошибке. Но всё же работает, пока так.
Всем спасибо!