Ansible 2.4: запуск сельдерея 3.1 в качестве демона, в то время как другая задача выполняется [дублировать]

У меня есть одна стратегия для решения вашей проблемы. Вы можете использовать приложение прокси для изменения или контроля вашего сетевого статуса. например, Charles.

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

И, наконец, вы обнаружите, что чистый статус был сформирован в более низкий темп.

20
задан user3364247 22 April 2015 в 19:04
поделиться

4 ответа

Запуск программы с '& amp;' не делает программу демонами, она просто работает в фоновом режиме. Для создания «истинного демона» ваша программа должна выполнить шаги, описанные здесь здесь .

Если ваша программа написана на C, вы можете вызвать функцию daemon (), которая сделает это для вы. Тогда вы можете запустить свою программу даже без '& amp;' в конце, и он будет запущен как демон.

Другим вариантом является вызов вашей программы с помощью демона , который также должен выполнять задание.

- name: Start daemon
  shell: daemon -- myexeprogram arg1 arg2
16
ответ дан Karel Jakubec 16 August 2018 в 03:51
поделиться
  • 1
    Благодаря ! Это помогло мне! – user3364247 23 April 2015 в 12:29
  • 2
    Обратите внимание, что связанные шаги считаются анти-паттернами в настоящее время : For developing a new-style daemon, none of the initialization steps recommended for SysV daemons need to be implemented. New-style init systems such as systemd make all of them redundant. Moreover, since some of these steps interfere with process monitoring, file descriptor passing and other functionality of the init system, it is recommended not to execute them when run as new-style service. – GnP 9 February 2018 в 17:06
  • 3
    Что такое? – JulienFr 22 June 2018 в 09:46
  • 4
    --, POSIX, является разделителем между опциями команды, которые начинаются с тире - и arguments , который может также содержат тире и могут, таким образом, путать варианты-синтаксический анализ ... Например, чтобы безопасно перечислить файл, вы должны сделать ls -- $filename - иначе ваша команда может потерпеть неудачу, если имя самого файла начинается с тире. – Mikhail T. 14 August 2018 в 19:21

Я нашел лучший способ, особенно потому, что я хотел, чтобы вывод был зарегистрирован, должен был использовать пакет «daemonize». Если вы находитесь в CentOS / Redhat, как показано ниже. Вероятно, для него есть и apt-пакет.

- name: yum install daemonize
  yum:
    name: daemonize
    state: latest

- name: run in background, log errors and standout to file
  shell:  daemonize -e /var/log/myprocess.log -o /var/log/myprocess.log  /opt/myscripts/myprocess.sh
2
ответ дан nelsonenzo 16 August 2018 в 03:51
поделиться

Из краткого описания того, что вы хотите достичь, похоже, вам было бы лучше настроить ваш исполняемый файл как услугу (используя Upstart или аналогичную), а затем запустить / остановить ее по мере необходимости на основе других условий которые требуют его запуска (или не запускаются).

Попытка запускать это как процесс в противном случае будет повлечь за собой захват PID или аналогичный, чтобы вы могли попробовать и закрыть демона, который вы начали, когда вы необходимо, с почти такой же сложностью, как установка файла конфигурации init, и без тонкостей, которые такие системы, как Upstart, дают вам такие элементы управления, как start / stop.

5
ответ дан PhillipHolmes 16 August 2018 в 03:51
поделиться

Когда вы (или Ansible) выходите из системы, выходной сигнал по-прежнему будет отправлен на текущий процесс, хотя он работает в фоновом режиме.

Вы можете использовать nohup, чтобы обойти это.

- name: Start daemon
  shell: nohup myexeprogram arg1 arg2 &

http://en.wikipedia.org/wiki/Nohup

10
ответ дан udondan 16 August 2018 в 03:51
поделиться
  • 1
    nohup не работает на Ansible. Попробуйте сами. – Boyang 19 January 2016 в 01:26
  • 2
    Это выполняется внутри неинтерактивного сеанса SSH, поэтому этот процесс будет умирать сразу же после сеанса. – mschuett 11 April 2016 в 18:47
  • 3
    Это отличная идея, если это сработало! – John Culviner 22 April 2016 в 17:57
  • 4
    Другие люди сообщают, что могут заставить это работать ... superuser.com/a/870925/57697 , но, сказав это, я не могу воспроизвести их успех. – Jonathan Hartley 13 June 2016 в 20:38
  • 5
    ребята, тогда какой другой способ достичь этого. Я не могу запустить этот запуск с помощью демона, а также nohup. Незаменимый скрипт все еще ждет ... и если я завершаю незаменимый скрипт, процесс на удаленном хосте также завершается – Mrunal Gosar 6 September 2016 в 10:21
Другие вопросы по тегам:

Похожие вопросы: