Пытаюсь понять БОГА рб

Я сталкиваюсь с небольшой путаницей с документацией GOD

Сначала мой скрипт конфигурации выглядит так

DIRECTORY = "/Users/joshianiket22/myProject/god_script"
God.pid_file_directory = DIRECTORY
God.watch do |w|
  w.name = "mess"
  w.start = "ruby /Users/joshianiket22/myProject/god_script/simple.rb"
  w.pid_file =  File.join(DIRECTORY,'simple.pid')
  puts File.join(DIRECTORY,'simple.pid')
  w.stop = "ruby -e 'puts \"#{DateTime.now}\"'"
  w.log = File.join(DIRECTORY,'god.log')
  w.behavior(:clean_pid_file)
  w.interval = 10.seconds
   w.start_if do |start| 
    start.condition(:process_running) do |c| 
      puts "Inside start condition"
      c.interval = 5.seconds 
      c.running = false
    end 
  end 
end

Путаница 1: ДИЛЕММА ФАЙЛА GOD PID

В документации GOD упоминается

введите здесь описание изображения

Теперь у меня есть ясность, я установил pid_file и pid_file_directory, но PID нигде не видно в том каталоге, который определен в моей конфигурации.

К вашему сведению, GOD запустился с sudo, поэтому предполагается, что каталог будет доступен для записи GOD

Путаница 2: START_IF CONDITION

введите здесь описание изображения

Теперь, как определить условие start_if, я не могу понять вариант использования для этого. Также слово условие какие условия для набора условий

  • Является ли :process_running набором условий? Если да, то какие другие наборы условий для start_if
  • Кроме того, что должны делать атрибуты внутри блока do? и когда их казнят?

    Точнее, я имею в виду c.running = false (что он делает внутри и какой другой список атрибутов доступен в start_if)

Путаница 3 (команда запуска/остановки/перезапуска)

Теперь, учитывая мой файл конфигурации, в котором записана команда start, теперь также требуется написать команду остановки и перезапуска в конфигурации.

так что при запуске следующего

sudo god остановить беспорядок
sudo god перезапустить беспорядок

их бы казнили

Предполагая, что я их не пишу

  • что произойдет, если запустить их?

  • Будет ли GOD в конечном итоге убивать запущенный процесс, когда будет выполнена команда остановки, т.е. sudo god stop mess' is executed? or restart the running process when restart command i.esudo god restart mess`?

Может ли кто-нибудь поделиться светом на это

Путаница 4 (демонизировать процесс или нет):

Согласно документации GOD введите здесь описание изображения

Теперь рассмотрим, что я явно поставил процесс в фоновый режим внутри БОГА, что-то вроде

w.start = "ruby /Users/joshianiket22/myProject/god_script/simple.rb &" 

что будет в таком случае

  • Будет ли БОГ следить за ними для команды остановки и перезапуска?

Таким образом, демонизация вашего процесса внутри GOD (в команде запуска) может считаться допустимым подходом, предполагая, что GOD знает, что процесс перешел в фоновый режим, и реагирует на все команды start/stop/restart в этом процессе при запуске против GOD?

подобно

sudo god остановить беспорядок
sudo god перезапустить беспорядок

Может ли кто-нибудь пролить свет на это, а также

Итак, вот список вопросов, извлеченных из приведенного выше

  • Почему не работает синтаксис pid_file_directory?

  • если :process_running - это набор условий, какие другие условия содержит start_if, а также то, что c.running = false (внутренне делает)

  • Нужно ли писать/определять stop и restart в конфигурации God

  • Если процесс явно переместится в фоновый режим, БОГ по-прежнему будет следить за ним для выполнения таких команд, как stop|restart и т. д.


person Viren    schedule 28.08.2013    source источник


Ответы (1)


Частично ответьте на часть моего вопроса

Вопрос: Нужно ли писать/определять остановку и перезагрузку в конфигурации God

Ответ Ну, на самом деле вы не можете определить свою собственную команду, но если вы не определяете, есть значение по умолчанию lambda для stop и restart

Прямо из документации GOD

введите здесь описание изображения

Вопрос: если процесс явно переведен в фоновый режим, будет ли БОГ по-прежнему отслеживать его для выполнения таких команд, как остановка | перезапуск и т. д.

Ответ: ответ ДА и НЕТ , Нет, потому что, если вы не дадите БОГу файл pid для мониторинга, он не будет контролировать процесс, работающий в фоновом режиме.

Снова из документации GOD

введите здесь описание изображения

Вопрос: Если :process_running является набором условий, какие другие условия start_if содержат также то, что c.running = false (внутренне делает)

Ответ: я отвечу на этот вопрос в двух частях.

  • Какие еще условия содержит start_if?

    Ans: Что ж, лучшее место для поиска — это каталог условий проверки бога по здесь есть process_running условие также существует

  • Что делает c.running = false (внутренне)?

    Ans: Что ж, c.running внутренне используется для проверки (проверка выполняется в отношении идентификатора процесса и текущей переменной), выполнялся ли процесс до начала god, поэтому, если процесс ie(c.running = true) запущен и pid указанный файл исправлен, все работает хорошо, но если отслеживаемые c.running = true и pid отличаются или не существуют, он продолжает зацикливаться, поэтому рекомендуется использовать c.running = true только в том случае, если процесс уже запущен, и правильный pid_file (с правильным pid в нем) определяется в файле бога. Это можно проверить по здесь

Примечание: Принимаю мой ответ, так как остался только один вопрос, и я считаю, что он в основном не работал из-за моих неправильных действий (т.е. pid не сохранялся в нужном каталоге) :) Остальные все вопросы ответил я.

person Viren    schedule 28.08.2013