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

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

Модератор: immortal

Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Пн окт 17, 2016 5:00 pm

В последнем обновлении добавилась функция мониторинга работы циклов и управления их работой. Интерфейс доступен через раздел XRay->Services

Изображение

Функция полезна в первую очередь разработчикам, которые создают свои модули, использующие фоновые циклы.
Вручную можно запустить/остановить цикл, а так же запретить его автозапуск (DISABLED) или же включить само-восстановление (AUTO-RECOVERY). Последнее позволяет системе автоматически перезапустить цикл, если он по какой-то причине закроется.

Кроме ручного управления, доступно управление циклами из кода, что может быть полезно, когда при изменении настроек модуля требуется перезапуск связанного с ним цикла. Для управления циклом использются глобальные переменные.

Например, есть цикл ./scripts/cycle_ping.php. Чтобы его остановить, достаточно выполнить команду в коде:

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

setGlobal('cycle_pingControl','stop');
Для запуска:

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

setGlobal('cycle_pingControl','start');
Для рестарта:

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

setGlobal('cycle_pingControl','restart');
Для запрета автозапуска (по-умолчанию он всегда разрешён):

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

setGlobal('cycle_pingDisabled','1');
Для включения авто-восстановления (по-умолчанию он всегда выключен):

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

setGlobal('cycle_pingAutoRestart','1');
За это сообщение автора sergejey поблагодарили (всего 12):
Ivan (Пн окт 17, 2016 5:05 pm) • cabat (Пн окт 17, 2016 5:26 pm) • skysilver (Пн окт 17, 2016 5:29 pm) • Alien (Пн окт 17, 2016 10:39 pm) • Varrcan (Вт окт 18, 2016 12:37 am) • Amarok (Вт окт 18, 2016 7:48 am) • Pooh (Ср окт 19, 2016 6:44 am) • xor (Чт окт 20, 2016 9:43 pm) • savenko_egor (Чт апр 06, 2017 11:34 pm) • Fav0rit (Вт апр 11, 2017 5:44 pm) и ещё 2
Рейтинг: 13.95%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
ipz
Сообщения: 238
Зарегистрирован: Чт ноя 26, 2015 10:54 pm
Благодарил (а): 38 раз
Поблагодарили: 45 раз

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

Сообщение ipz » Вт окт 18, 2016 3:20 pm

Опечатка в строке для запуска
GreatBAO
Сообщения: 119
Зарегистрирован: Пн авг 24, 2015 11:24 am
Откуда: Сочи
Благодарил (а): 4 раза
Поблагодарили: 14 раз

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

Сообщение GreatBAO » Пн ноя 07, 2016 12:01 am

видимо из за этого обновления, после запуска cyrcle.php в лог прет запуск всех циклов по кругу раз 40-50 ?

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

23:58:00 working thread: cycle_execs.php
23:58:00 working thread: cycle_states.php
23:58:00 working thread: cycle_rss.php
23:58:00 working thread: cycle_websockets.php
23:58:00 working thread: cycle_scheduler.php
23:58:00 working thread: cycle_ping.php
23:58:00 working thread: cycle_main.php
23:58:00 working thread: cycle_webvars.php
23:58:01 working thread: cycle_execs.php
23:58:01 working thread: cycle_states.php
23:58:01 working thread: cycle_rss.php
23:58:01 working thread: cycle_websockets.php
23:58:01 working thread: cycle_scheduler.php
23:58:01 working thread: cycle_ping.php
23:58:01 working thread: cycle_main.php
23:58:01 working thread: cycle_webvars.php
23:58:02 working thread: cycle_execs.php
23:58:02 working thread: cycle_states.php
23:58:02 working thread: cycle_rss.php
23:58:02 working thread: cycle_websockets.php
23:58:02 working thread: cycle_scheduler.php
23:58:02 working thread: cycle_ping.php
23:58:02 working thread: cycle_main.php
23:58:02 working thread: cycle_webvars.php
переустановил MJD отсюда - http://majordomo.smartliving.ru/downloa ... 00b.tar.gz
все стартует нормально
как только обновляюсь, в лог прут кучу строк о запуске циклов, буквально за 2-3 минуты лог толстеет на 1-2мб из за этого
GreatBAO
Сообщения: 119
Зарегистрирован: Пн авг 24, 2015 11:24 am
Откуда: Сочи
Благодарил (а): 4 раза
Поблагодарили: 14 раз

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

Сообщение GreatBAO » Вт ноя 08, 2016 10:44 am

ответ нашел сам - в файле lib/threads.php
закоментировать строку 183 //echo date('H:i:s') . " working thread: " . $name . "\n";
не совсем понятен этот вывод в лог
За это сообщение автора GreatBAO поблагодарил:
sorochan.ilya (Пн ноя 14, 2016 6:57 am)
Рейтинг: 1.16%
ILGAS
Сообщения: 366
Зарегистрирован: Пт июл 26, 2013 4:11 pm
Благодарил (а): 71 раз
Поблагодарили: 18 раз

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

Сообщение ILGAS » Чт апр 06, 2017 10:38 am

Всем привет, подскажите как найти причину не возможности перезапуска цикла, majordomo пытает cycle_websockets сделать restart, но надпись так и висит, и не перезапускается. скрин тут https://yadi.sk/i/lihbOMbp3Ghrqn
похожая проблема бывает с cycle_schedapp, цикл работает но majordomo пытается перезапустить цикл, в Debug каждую секунду пишет

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

17:31:40 0.58912700 Error registered (type: cycle_stop): ./scripts/cycle_schedapp.php
17:31:40 0.58764200 AUTO-RECOVERY: ./scripts/cycle_schedapp.php
17:31:39 0.56763000 Closing thread: c:/_majordomo/server/php/php.exe -q ./scripts/cycle_schedapp.php --params "a:0:{}">>C:\_majordomo\htdocs/debmes/log_2017-03-01-cycle_schedapp.php.txt
об этом писал viewtopic.php?f=5&t=3411&start=20#p47149
Аватара пользователя
slgeo
Сообщения: 551
Зарегистрирован: Чт фев 05, 2015 2:35 pm
Откуда: РнД
Благодарил (а): 139 раз
Поблагодарили: 74 раза

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

Сообщение slgeo » Пн фев 05, 2018 11:41 pm

Так и нет ответа? Никакой реакции на нажатия кнопок Start, Restart, только надпись висит. Что делать со службами, если они светятся синим шрифтом? Как вывести в поле Live значение для своего цикла, оно пустое?
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Вт фев 06, 2018 6:10 am

ILGAS писал(а):Всем привет, подскажите как найти причину не возможности перезапуска цикла, majordomo пытает cycle_websockets сделать restart
Может у вас сокеты отключены в config.php? Если они отключены, цикл скорее всего не должен быть запущен.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
ipz
Сообщения: 238
Зарегистрирован: Чт ноя 26, 2015 10:54 pm
Благодарил (а): 38 раз
Поблагодарили: 45 раз

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

Сообщение ipz » Вт фев 06, 2018 8:23 am

slgeo писал(а):Что делать со службами, если они светятся синим шрифтом? Как вывести в поле Live значение для своего цикла, оно пустое?
Синим цветом светятся те службы, которые не запущены. Делать с ними что-нибудь можно, если они вам нужны.
Что делать, чтобы выводилось значение в поле Live написано в UPD2 здесь https://majordomo.smartliving.ru/forum/ ... =40#p70319
За это сообщение автора ipz поблагодарил:
slgeo (Вт фев 06, 2018 8:38 am)
Рейтинг: 1.16%
Аватара пользователя
slgeo
Сообщения: 551
Зарегистрирован: Чт фев 05, 2015 2:35 pm
Откуда: РнД
Благодарил (а): 139 раз
Поблагодарили: 74 раза

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

Сообщение slgeo » Вт фев 06, 2018 8:41 am

c Live понял, спасибо.
А вот синим помечены у меня упавшие циклы.
sudo service majordomo start перестал запускать циклы. Хотя sudo service majordomo stop успешно отрабатывает. Спасает только перезагрузка.
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

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

Сообщение Divan » Пн авг 31, 2020 9:14 pm

Измененный код для метода checkState объекта System с автоперезапуском цикла. Видео смотреть здесь. Рекомендую, сначала проверять на тестовой машине, а после переносить на боевую.

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

$details=array();
$red_state=0;
$yellow_state=0;

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

$cycles=array('ping'=>'цикл опроса устройств online','webvars'=>'цикл, обеспечивающий обновление веб-переменных');
foreach($cycles as $k=>$v) {
 $tm=getGlobal('ThisComputer.cycle_'.$k.'Run');
 if (time()-$tm>3*60 && !empty($tm)) {
  $yellow_state=1;
  $details[]=$v." ".LANG_GENERAL_CYCLE." ".LANG_GENERAL_STOPPED.".";
  setGlobal('ThisComputer.cycle_'.$k.'Run','');
  setGlobal('ThisComputer.cycle_'.$k.'Control','restart');
 }
}

if ($red_state) {
 $state='red';
 $state_title=LANG_GENERAL_RED; 
} elseif ($yellow_state) {
 $state='yellow';
 $state_title=LANG_GENERAL_YELLOW;  
} else {
 $state='green';
 $state_title=LANG_GENERAL_GREEN;   
}

$new_details=implode(". ",$details);
if ($this->getProperty("stateDetails")!=$new_details) {
 $this->setProperty('stateDetails',$new_details);
}

if ($this->getProperty('stateColor')!=$state) {
 $this->setProperty('stateColor',$state);
 $this->setProperty('stateTitle',$state_title);
 if ($state!='green') {
  say(LANG_GENERAL_SYSTEM_STATE." ".LANG_GENERAL_CHANGED_TO." ".$state_title.".");
  say(implode(". ",$details));
 } else {
  say(LANG_GENERAL_SYSTEM_STATE." ".LANG_GENERAL_RESTORED_TO." ".$state_title);
 }
 $this->callMethod('stateChanged');
}
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/system_checkstate.php');
/* end injection of {SDevices} */
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Ответить