Пытаясь понять БОГА рб
Я сталкиваюсь с небольшим количеством путаницы с документацией БОГА
Во-первых, мой конфигурационный скрипт выглядит так
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: ДИЛЕММА ФАЙЛА БОГА PID
В документации БОГА это упоминается
Теперь у меня ясно, что я установил pid_file и pid_file_directory, но PID - это не то место, где можно увидеть в этом каталоге, который определен в моей конфигурации.
К вашему сведению, начал БОГ с sudo
при условии, что каталог будет доступен для записи БОГОМ
Путаница 2: START_IF СОСТОЯНИЕ
Теперь, когда мы определяем условие start_if, я не могу понять сценарий использования для этого. Также слово условие, какие условия для набора условий
- Является ли:process_running набором условий?, если да, каковы другие условия для start_if?
Кроме того, что предполагают делать атрибуты внутри блока do? и когда они будут казнены?
Точнее я имел в виду c.running = false (что он делает внутренним и какие другие списки атрибутов доступны на start_if)
Путаница 3 (команда пуска / остановки / перезапуска)
Теперь, учитывая мой конфигурационный файл, в котором написана команда запуска, теперь также необходимо написать команду остановки и перезапуска в конфигурации
так что при запуске следующего
судо бог остановит беспорядок
Судо Бог перезагрузить беспорядок
они будут казнены
При условии, что я их не пишу
что будет, если запустить их?
Будет ли Бог в конечном итоге убьет запущенный процесс, когда команда останова, т.е.
sudo god stop mess' is executed? or restart the running process when restart command i.e
sudo god restart mess` выполнен?
Кто-нибудь может поделиться светом на это
Путаница 4 (стоит или нет демонизировать процесс):
Согласно документации БОГА
Теперь рассмотрим, что я явно помещаю процессом в фон внутри GOD что-то вроде
w.start = "ruby /Users/joshianiket22/myProject/god_script/simple.rb &"
что будет в таком случае
- Будет ли БОГ следить за их командами остановки и перезапуска?
Итак, демонизация вашего процесса внутри GOD (в команде start) может считаться правильным подходом, предполагающим, что GOD знает, что процесс прошел в фоновом режиме и реагирует на все команды запуска / остановки / перезапуска этого процесса при запуске с GOD?
лайк
судо бог остановит беспорядок
Судо Бог перезагрузить беспорядок
Кто-нибудь может пролить свет на это тоже
Итак, вот список вопросов, извлеченный сверху
Почему не работает синтаксис pid_file_directory?
if:process_running - это набор условий, которые другие условия выполняет start_if и что c.running = false (внутренне)
Нужно ли писать / определять
stop
а такжеrestart
в конфигурации БогаЕсли процесс будет явным, перейдите в фоновый режим, БОГ все еще будет следить за его командами
stop|restart
так далее
1 ответ
Частично ответьте на часть моего вопроса
Вопрос: нужно ли писать / определять остановки и перезапуск в конфигурации Бога
Ответ: Не совсем, вы можете определить свою собственную команду, но если в случае, если вы не определили, есть значение по умолчанию lambda
за stop
а также restart
Прямо из документации БОГА
Вопрос: Если процесс будет явным, перейдите в фоновый режим, будет ли GOD по-прежнему следить за его командами вроде stop|restart и т.д.
Ответ: Ответ ДА и НЕТ, Нет, потому что если вы не дадите БОГУ pid
файл для мониторинга не будет контролировать процесс, работающий в фоновом режиме
Опять из документации БОГА
Вопрос: Если: process_running - это набор условий, которые делают другие условия start_if
содержит также то, что c.running = false (внутренне делать)
Ответ: Ну, я отвечу на этот вопрос в 2 частях
Какие другие условия делает
start_if
содержит?Ans:
Ну, лучшее место, чтобы посмотреть, что находится в условиях каталога проверки бога здесь естьprocess_running
условие также существуетЧто c.running = false (внутренне делать)?
Ans:
Хорошо, c.running внутренне используется для проверки (проверка выполняется в отношении идентификатора процесса и рабочей переменной), выполнялся ли процесс до того, когдаgod
начать, если процесс т.е. (c.running = true) запущен иpid
указанный файл исправил все работает хорошо, но еслиc.running = true
а такжеpid
отслеживается отличается или не существует, он продолжает цикл, поэтому рекомендуется использоватьc.running = true
только если процесс уже запущен и корректенpid_file
(с правильнымpid
в это есть) это определить в файле бога. Это можно проверить здесь
Примечание: Принятие моего ответа, так как остался только один вопрос, и я считаю, что он в основном не работал из-за моей неправильной работы (т.е. pid не был сохранен в нужной директории):) Остальные вопросы, на которые я отвечаю.