Это - хорошая практика для создания фонового задания в рамках init сценария, если процесс не может сам daemonize?

Вы не можете выполнить двоичные файлы Windows (источник, скомпилированный для выполнения в Windows) на Linux, не проходя какой-то эмулятор Windows.

Таким образом, если Вы не хотите запускать Windows в виртуальной машине, или Вы не хотите выполнять Вино или что-либо подобное, извините, но это не будет работать на Linux.

4
12.07.2012, 22:22
2 ответа

А именно, я знаю, что это не обычно приемлемо, поскольку процессы не хорошо экранируются от внешнего влияния.

Действительно ли приемлемо создать фоновые задания для "сервисов?"

Если не будет никакого другого пути (то то есть, сервис не разветвится самостоятельно), то, вероятно, да. Debian start-stop-daemon имеет a --background параметр для таких случаев:

   -b, --background
          Typically used with programs that don't  detach  on  their  own.
          This option will force start-stop-daemon to fork before starting
          the  process,  and  force  it  into  the  background.   WARNING:
          start-stop-daemon  cannot  check  the exit status if the process
          fails to execute for any reason. This is a last resort,  and  is
          only  meant  for  programs  that either make no sense forking on
          their own, or where it's not feasible to add the code  for  them
          to do this themselves.
2
27.01.2020, 21:00
[112249]Так как на первый вопрос уже дан ответ, я сконцентрируюсь на последнем и том, и другом.
  • Несколько дней назад я боролся с подобной проблемой: мне пришлось запускать некоторые процессы по трубе из сценариев [112749]/etc/init.d[112750]. Чтобы решить эту проблему, я посмотрел на RHEL6 ([112751]даемон[112752]) и [112753]киллпрок[112754] из [112755]/etc/init.d/functions[112756]) и Debian ([112757]start-stop-daemon[112758]). Что я узнал, так это то, что оба не работают с трубами (очень хорошо). Даже было как-то возможно запустить их, но были серьёзные проблемы с их остановкой. Поэтому я написал небольшой инструмент
  • pipexec

    enter image description here

    . Эта программа запускает трубку программ, но ведет себя как одна программа. Пример: когда [112761]SIGTERM[112762] посылается в [112763]pipexec[112764], он убивает всех детей, а затем и самого себя. Также поддерживается обработка pid-файлов - что позволяет легко интегрироваться с RHEL6 [112765] демоном[112766] и [112767]killproc[112768].

    enter image description here

    Должен ли я вместо этого использовать FIFO/именованную трубу для обработки межпроцессного взаимодействия? Если да, должен ли я по-прежнему создавать оба процесса в качестве фоновых заданий? Стабильно ли это?


    Я тоже думал об этом - но для меня это сложно и у меня не было действительно хорошего опыта, когда дело доходит до fifos относительно стабильности и надежности (может быть это моя проблема - но поэтому я редко их использую ;-) )

    qlmanage -p "$@" &
    

    Я интегрировал [112771]pipexec[112772] с RHEL6 и нет никаких проблем; он просто работает.

    enter image description here

    Доброе пожелание - Andreas[112260]*.

    0
    27.01.2020, 21:00

    Теги

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