node.js - 如何从子进程脚本运行打包的可执行 node.js 应用程序?
问题描述
我正在尝试从 bash 脚本运行可执行文件。可执行文件是使用 zeit-pkg 打包的 nodejs 应用程序。
我在做什么:
运行子进程。子进程杀死父进程,用新版本替换应用程序并再次运行应用程序。
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
如何运行我的可执行文件?
解决方案
推荐阅读
- scala - SBT:自动生成 allOutputFiles
- django - 单独渲染字段时无法访问错误
- oracle - 我在 sqlplus 中创建的表没有出现在 Navicat lite
- python - 我如何将 input() 函数放入 python 3 中的 def 函数中
- javascript - Mongoose - 如何链式保存,以便将数据保存到多个集合中
- android - 在Android上调用接口的方法时如何自动显示进度对话框?
- html - 尽管使用视口等,我的网页不会在不同的屏幕尺寸下全屏显示
- javascript - 反应:将firebase url转换为文件
- hadoop - 带有多个服务器的气流 conn_id
- r - 结合使用 nest 和 map 与 mgcv gam 和 broom augment