Страница 4 из 4

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

Добавлено: Вт ноя 09, 2021 1:23 pm
andrey040670
mihei писал(а):
Вт ноя 09, 2021 1:20 pm
cycle_states заработал.Остальные так же.
А после перезагрузки системы?

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

Добавлено: Вт ноя 09, 2021 3:43 pm
mihei
andrey040670 писал(а):
Вт ноя 09, 2021 1:23 pm
mihei писал(а):
Вт ноя 09, 2021 1:20 pm
cycle_states заработал.Остальные так же.
А после перезагрузки системы?
Все то-же самое.

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

Добавлено: Вт ноя 09, 2021 4:10 pm
andrey040670
Разрешить автозагрузку:
sudo systemctl enable majordomo

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

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

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

Добавлено: Пн окт 09, 2023 2:58 pm
V.A.S.t
Первое сообщение данной темы читали?
if(!gg('cycle_modbusRun')) setGlobal('cycle_modbusControl','start');
Или
if(!gg('cycle_modbusRun')) setGlobal('cycle_modbusControl','restart');

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

Добавлено: Пн окт 09, 2023 4:06 pm
xor
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');
 }
}


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

Добавлено: Пн окт 09, 2023 8:58 pm
denis
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');
Первое сообщение читал, как я понял этот код получает состояние цикла "остановлен". В моем же случае цикл не останавливается, соответственно приведенный код не сработает, т.к. цикл работает, у него состояние "работает не отвечает".

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

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

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

Добавлено: Чт окт 12, 2023 1:28 pm
xor
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
если остановлен, то старт
если не отвечает - рестарт

если контроль цикла через свойство не работает у вас - разбирайтесь с системой