Управление циклами (сервисами)

Новые релизы, обновления и т.п.

Модератор: immortal

Аватара пользователя
andrey040670
Сообщения: 458
Зарегистрирован: Пн июл 31, 2017 10:00 pm
Благодарил (а): 161 раз
Поблагодарили: 85 раз

Re: Управление циклами (сервисами)

Сообщение andrey040670 » Вт ноя 09, 2021 1:23 pm

mihei писал(а):
Вт ноя 09, 2021 1:20 pm
cycle_states заработал.Остальные так же.
А после перезагрузки системы?
MJD alfa: Khadas VIM1 Ubuntu 18.04.2 LTS bionic Linux 4.9.40 #2 SMP PREEMPT Tue Oct 30 15:47:54 CST 2018 aarch64 GNU/Linux
MJD alfa: Rpi 3B Debian 11 (bullseye) Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux
mihei
Сообщения: 31
Зарегистрирован: Пн янв 16, 2017 11:02 am
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Управление циклами (сервисами)

Сообщение mihei » Вт ноя 09, 2021 3:43 pm

andrey040670 писал(а):
Вт ноя 09, 2021 1:23 pm
mihei писал(а):
Вт ноя 09, 2021 1:20 pm
cycle_states заработал.Остальные так же.
А после перезагрузки системы?
Все то-же самое.
Аватара пользователя
andrey040670
Сообщения: 458
Зарегистрирован: Пн июл 31, 2017 10:00 pm
Благодарил (а): 161 раз
Поблагодарили: 85 раз

Re: Управление циклами (сервисами)

Сообщение andrey040670 » Вт ноя 09, 2021 4:10 pm

Разрешить автозагрузку:
sudo systemctl enable majordomo
MJD alfa: Khadas VIM1 Ubuntu 18.04.2 LTS bionic Linux 4.9.40 #2 SMP PREEMPT Tue Oct 30 15:47:54 CST 2018 aarch64 GNU/Linux
MJD alfa: Rpi 3B Debian 11 (bullseye) Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux
denis
Сообщения: 284
Зарегистрирован: Сб ноя 24, 2012 11:47 am
Благодарил (а): 28 раз
Поблагодарили: 28 раз

Re: Управление циклами (сервисами)

Сообщение denis » Пн окт 09, 2023 9:06 am

Всем добрый день!
Не нашел в ветке и в поиске. Может есть способ получить статус цикла через getProperty или иным способом, если цикл находится в состоянии "не отвечает"?
У меня вентустановка Komfovent работает по modbus и иногда, вероятно, происходит зависание обмена. В результате цикл modbus переходит в состояние "не отвечает", хочу сделать перезапуск цикла из кода при наступлении такого события.
V.A.S.t
Сообщения: 258
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск
Благодарил (а): 15 раз
Поблагодарили: 58 раз

Re: Управление циклами (сервисами)

Сообщение V.A.S.t » Пн окт 09, 2023 2:58 pm

Первое сообщение данной темы читали?
if(!gg('cycle_modbusRun')) setGlobal('cycle_modbusControl','start');
Или
if(!gg('cycle_modbusRun')) setGlobal('cycle_modbusControl','restart');
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Управление циклами (сервисами)

Сообщение xor » Пн окт 09, 2023 4:06 pm

denis писал(а):
Пн окт 09, 2023 9:06 am
Всем добрый день!
Не нашел в ветке и в поиске. Может есть способ получить статус цикла через getProperty или иным способом, если цикл находится в состоянии "не отвечает"?
У меня вентустановка Komfovent работает по modbus и иногда, вероятно, происходит зависание обмена. В результате цикл modbus переходит в состояние "не отвечает", хочу сделать перезапуск цикла из кода при наступлении такого события.
и посмотрите систем_стейтс. там в методе System.checkState был встроен механизм оперативного перезапуска циклов

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

$cycles = array('main'=>'главный цикл','execs'=>'цикл запуска команд','scheduler'=>'цикл планировщика');
foreach($cycles as $k=>$v) {
 $tm = gg('cycle_'.$k.'Run');
 if ($tm && time()-$tm > 2 * 60) {
  $red_state = 1;
  $details[] = $v." остановлен.";
  sg('cycle_'.$k.'Run','');
  sg('cycle_'.$k.'Control','restart');
 }
}

denis
Сообщения: 284
Зарегистрирован: Сб ноя 24, 2012 11:47 am
Благодарил (а): 28 раз
Поблагодарили: 28 раз

Re: Управление циклами (сервисами)

Сообщение denis » Пн окт 09, 2023 8:58 pm

V.A.S.t писал(а):
Пн окт 09, 2023 2:58 pm
Первое сообщение данной темы читали?
if(!gg('cycle_modbusRun')) setGlobal('cycle_modbusControl','start');
Или
if(!gg('cycle_modbusRun')) setGlobal('cycle_modbusControl','restart');
Первое сообщение читал, как я понял этот код получает состояние цикла "остановлен". В моем же случае цикл не останавливается, соответственно приведенный код не сработает, т.к. цикл работает, у него состояние "работает не отвечает".
denis
Сообщения: 284
Зарегистрирован: Сб ноя 24, 2012 11:47 am
Благодарил (а): 28 раз
Поблагодарили: 28 раз

Re: Управление циклами (сервисами)

Сообщение denis » Пн окт 09, 2023 9:00 pm

xor писал(а):
Пн окт 09, 2023 4:06 pm
denis писал(а):
Пн окт 09, 2023 9:06 am
Всем добрый день!
Не нашел в ветке и в поиске. Может есть способ получить статус цикла через getProperty или иным способом, если цикл находится в состоянии "не отвечает"?
У меня вентустановка Komfovent работает по modbus и иногда, вероятно, происходит зависание обмена. В результате цикл modbus переходит в состояние "не отвечает", хочу сделать перезапуск цикла из кода при наступлении такого события.
и посмотрите систем_стейтс. там в методе System.checkState был встроен механизм оперативного перезапуска циклов
Вопрос: состояние цикла "остановлен" и состояние цикла "работает не отвечает" аналогичны?
Автоматический перезапуск не происходит. В таком состоянии цикл сегодня провисел примерно час, затем заработал, вероятно таймаут запроса modbus закончился.
Есть идея как сделать "костыль", но хотелось получить состояние цикла, а после уже решать, что с ним делать.
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Управление циклами (сервисами)

Сообщение xor » Чт окт 12, 2023 1:28 pm

denis писал(а):
Пн окт 09, 2023 9:00 pm
xor писал(а):
Пн окт 09, 2023 4:06 pm
denis писал(а):
Пн окт 09, 2023 9:06 am
Всем добрый день!
Не нашел в ветке и в поиске. Может есть способ получить статус цикла через getProperty или иным способом, если цикл находится в состоянии "не отвечает"?
У меня вентустановка Komfovent работает по modbus и иногда, вероятно, происходит зависание обмена. В результате цикл modbus переходит в состояние "не отвечает", хочу сделать перезапуск цикла из кода при наступлении такого события.
и посмотрите систем_стейтс. там в методе System.checkState был встроен механизм оперативного перезапуска циклов
Вопрос: состояние цикла "остановлен" и состояние цикла "работает не отвечает" аналогичны?
Автоматический перезапуск не происходит. В таком состоянии цикл сегодня провисел примерно час, затем заработал, вероятно таймаут запроса modbus закончился.
Есть идея как сделать "костыль", но хотелось получить состояние цикла, а после уже решать, что с ним делать.
не надо костылей
вы через гг('cycle_name'.'Run') получаете время его последнего ответа, вам решать, как это интерпретировать. у меня если там пусто - остановлено, если время отклика цикла давнишнее - не отвечает (за положенное время)
управление поведением через свойство cycle_name'.'Control' записью туда текста:
start, stop, restart
если остановлен, то старт
если не отвечает - рестарт

если контроль цикла через свойство не работает у вас - разбирайтесь с системой
За это сообщение автора xor поблагодарил:
denis (Пт окт 13, 2023 1:59 am)
Рейтинг: 1.16%
Ответить