У меня есть одна стратегия для решения вашей проблемы. Вы можете использовать приложение прокси для изменения или контроля вашего сетевого статуса. например, Charles.
Вы должны изменить конфигурацию по умолчанию в Charles, как и следующее изображение, которое я опубликовал.
И, наконец, вы обнаружите, что чистый статус был сформирован в более низкий темп.
Запуск программы с '& amp;' не делает программу демонами, она просто работает в фоновом режиме. Для создания «истинного демона» ваша программа должна выполнить шаги, описанные здесь здесь .
Если ваша программа написана на C, вы можете вызвать функцию daemon (), которая сделает это для вы. Тогда вы можете запустить свою программу даже без '& amp;' в конце, и он будет запущен как демон.
Другим вариантом является вызов вашей программы с помощью демона , который также должен выполнять задание.
- name: Start daemon
shell: daemon -- myexeprogram arg1 arg2
Я нашел лучший способ, особенно потому, что я хотел, чтобы вывод был зарегистрирован, должен был использовать пакет «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
Из краткого описания того, что вы хотите достичь, похоже, вам было бы лучше настроить ваш исполняемый файл как услугу (используя Upstart или аналогичную), а затем запустить / остановить ее по мере необходимости на основе других условий которые требуют его запуска (или не запускаются).
Попытка запускать это как процесс в противном случае будет повлечь за собой захват PID или аналогичный, чтобы вы могли попробовать и закрыть демона, который вы начали, когда вы необходимо, с почти такой же сложностью, как установка файла конфигурации init, и без тонкостей, которые такие системы, как Upstart, дают вам такие элементы управления, как start / stop.
Когда вы (или Ansible) выходите из системы, выходной сигнал по-прежнему будет отправлен на текущий процесс, хотя он работает в фоновом режиме.
Вы можете использовать nohup
, чтобы обойти это.
- name: Start daemon
shell: nohup myexeprogram arg1 arg2 &
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--
, POSIX, является разделителем между опциями i> команды, которые начинаются с тире-
и arguments i>, который может i > также содержат тире и могут, таким образом, путать варианты-синтаксический анализ ... Например, чтобы безопасно перечислить файл, вы должны сделатьls -- $filename
- иначе ваша команда может потерпеть неудачу, если имя самого файла начинается с тире. – Mikhail T. 14 August 2018 в 19:21