Вопрос

Я пишу скрипт начальной загрузки ruby для школьного проекта, и частью этого процесса начальной загрузки является запуск пары фоновых процессов (которые написаны и функционируют должным образом).То, что я хотел бы сделать, это что-то вроде:

`/path/to/daemon1 &`
`/path/to/daemon2 &`
`/path/to/daemon3 &`

Однако это блокируется при первом вызове для выполнения daemon1.Я видел ссылки на Process.spawn метод, но это, кажется, функция 1.9+, и я ограничен Ruby 1.8.

Я также пытался запустить эти демоны из разных потоков, но я бы хотел, чтобы мой загрузочный скрипт мог завершаться.

Итак, как я могу запустить эти фоновые процессы, чтобы мой скрипт начальной загрузки не блокировался и мог завершиться (но демоны все еще работали в фоновом режиме)?

Это было полезно?

Решение

Пока вы работаете на POSIX OS, вы можете использовать fork и exec.

fork = Создать подпроцесс

exec = Заменить текущий процесс другим процессом

Затем вам нужно сообщить, что ваш основной процесс не заинтересован в созданных подпроцессах через Process.detach.

job1 = fork do
  exec "/path/to/daemon01"
end

Process.detach(job1)

...

Другие советы

лучший способ псевдо-деамонизации:

`((/path/to/deamon1 &)&)` 

отбросит процесс в его собственную оболочку.

лучший способ на самом деле демонизировать:

`service daemon1 start`

и убедитесь, что сервер / пользователь имеет разрешение на запуск реального демона.ознакомьтесь с инструментом 'deamonize' для Linux, чтобы настроить свой deamon.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top