Как запустить упакованное исполняемое приложение node.js из сценария дочернего процесса? - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь запустить исполняемый файл из bash-скрипта.Исполняемый файл - это приложение nodejs, упакованное с zeit-pkg.

Что я делаю:

Запуск дочернего процесса.Дочерний процесс убивает родителя, заменяет приложение новой версией и снова запускает приложение.

const fileName = './run_install';
const dir = 'temp';
const runInstall = spawn(
  fileName, [],
  {
    cwd: process.cwd() + '/' + dir,
    detached: true,
    stdio: 'ignore'
  }
);
runInstall.unref();

Все работает с файлами javascript и npm start

Мой сценарий ./run_install для файла javascript

sleep 1s
kill -9 $(pgrep node)
sleep 1s
mkdir ../old_versions
mv ../server.js ../old_versions/server.js.old
mv server.js ../
cd ../
npm start & rm -r ./temp & exit 0

Но когда я пытаюсь сделать то же самое с исполняемым файлом, новая версия приложения не запускается.строка ./imac & просто игнорируется.

Мой сценарий ./run_install для исполняемого файла

#!/bin/bash
sleep 1s
kill -9 $(pgrep imac)
sleep 1s
mkdir ../old_versions
mv ../imac ../old_versions/imac.old
mv imac ../
mv rollback ../
cd ../
chmod 755 ./imac
chmod 755 ./rollback
./imac &
rm -r ./temp & exit 0

Как запустить исполняемый файл?

...