2013-12-05 5 views
1

Насколько я могу судить по инструкциям в api docs. Я запускаю процесс, используя параметры detached:true, stdio:['ignore','ignore','ignore'], я вызываю unref в ChildProcess. У ChildProcess есть pid, поэтому я думаю, что он был успешно запущен. Я пытаюсь запустить сервер Yeti из задачи. Этот код находится в асинхронном вызове, поэтому next продолжает и в конечном итоге завершает задачу. Я использую which, чтобы получить cmd, и его правильный путь к сценарию Yeti в /usr/local/bin на Mac OSX 10.9. Порт также определяется пустым портом. Если я запускаю ту же команду в командной строке, она работает нормально. После выхода grunt я вызываю ps aux | grep node и ps aux и grep для зарегистрированного pid и ничего не работает. Вот код:Отдельный дочерний процесс завершает выход скрипта в node.js

yeti = spawn("" + cmd + " --server --port " + port, [], { 
    detached: true, 
    stdio: ['ignore', 'ignore', 'ignore'] 
}); 
yeti.unref(); 
next("Yeti server is running. pid: " + yeti.pid); 

ответ

4

Попробуйте это:

spawn(cmd, ["--server", "--port", port], { 
    detached: true, 
    stdio: ['ignore', 'ignore', 'ignore'] 
}); 

Я не видел ни одного примера spawn где все прошло, как первый аргумент. Я всегда видел, что он используется с первым аргументом, являющимся только именем команды (то есть исполняемым именем или путем к исполняемому файлу), а вторым аргументом является массив строк.

Тот факт, что вы видели pid, не является показательным, потому что в системах Unix-типа spawn будет fork, а затем exec. fork может быть успешным, поэтому вы видите новый pid, но exec терпит неудачу, потому что имя исполняемого файла не имеет смысла для ОС.

+0

Ха-ха, что сделали это! Благодарю. –

0

Если вы нашли это, исследуя, почему ваши выходы процесса, когда вы убьете родителей, хотя это отдельно, и вы используете PM2: https://github.com/Unitech/pm2/issues/1036

пм2 использует убить дерево процессов. Это убивает все дерево процессов. Выполнение команд cli с --no-treekill решит это.

связаны также: https://github.com/Unitech/PM2/issues/1564

Смежные вопросы