egg服务的重启,这里使用到了child_process插件。

安装插件:npm install child_process --save

使用插件:

const callfile = require('child_process');callfile.spawn(脚本路径, [ '-P', port, '-W', workPath ], { cwd: workPath, stdio: 'ignore', detached: true }, function(error, stdout, stderr) {if (error) {console.error('error: ' + error);return;}console.log('stdout: ' + stdout);console.log('stderr: ' + stderr);}).unref();

说明:

第一个参数为脚本的路径可以是相对路径,也可以是绝对路径

第二个参数为脚本参数,这里用到了egg服务的端口和脚本的工作路径

第三个参数为本次子进程所带的参数

第四个参数为回调函数

调用callfile.spawn().unref(),将子进程从父进程的事件循环中剔除,于是父进程可以愉快的退出;

设置shell脚本的工作路径cwd: 脚本工作路径

设置detached为true,准备子进程独立于其父进程运行;

设置 stdio: ‘ignore’,忽略输出,因为默认情况下,在父 Node.js 进程和衍生的子进程之间会建立管道,这些管道具有有限的容量,如果子进程在没有捕获输出的情况下写入超出了该限制,则子进程将阻塞等待管道缓冲区接受更多的数据。

缺一不可。

开发环境脚本

#!/bin/bashPORT=""WORKPATH=""while getopts ":P:W:" arg
docase $arg inP)PORT=$OPTARG;;W)WORKPATH=$OPTARG;;?)echo "含有未知参数"exit 1;;esac
done# kill $(lsof -i:$PORT) #优雅退出,但是会将访问该端口的浏览器也Killfuser -k -n tcp $PORT #暴力退出sleep 3cd $WORKPATHnohup npm run dev &

生产环境脚本

#!/bin/bashPORT=""WORKPATH=""while getopts ":P:W:" arg
docase $arg inP)PORT=$OPTARG;;W)WORKPATH=$OPTARG;;?)echo "含有未知参数"exit 1;;esac
done# npm stop 使用这个退出有问题# kill $(lsof -i:$PORT) #优雅退出,但是会将访问该端口的浏览器也Killfuser -k -n tcp $PORT #暴力退出sleep 10cd $WORKPATHnpm start

egg服务重启及child_process的使用相关推荐

  1. IBM was调试端口开通演示,was服务重启、端口号查看方法

    IBM was中间件调试端口开通实例演示 was 中间件调试端口开通与查看 ① was 中间件调试端口开通 ② was 服务重启 ③ was 服务端口号查看方法 [ 推荐文章 ] 一篇文章快速掌握 L ...

  2. zbb20171013 mysql服务重启 重启服务 重启mysql服务

    mysql服务重启 windows net stop mysql net start mysql linux 提示* Redhat Linux 也支持service command, 启动:# ser ...

  3. centos7 network网络服务重启报错failed to start lsb

    network网络服务重启报错failed to start lsb 解决办法: 先看log里哪个网卡没有启动 cat /var/log/messages | grep network 查看网卡mac ...

  4. 主机升级rsyslog后服务异常分析,rsyslog服务重启报错

    1:异常情况: 现有版本:rsyslog-8.24.0-34.el7.x86_64 升级到:rsyslog-8.24.0-38.el7.x86_64 升级后服务重启不了,服务状态如下: systemd ...

  5. ubuntu下各服务 重启命令

    ubuntu下各服务 重启命令: 清理目录 apt-get auto-clean 重新启动vsftp /etc/init.d/vsftpd restart 启动svnserve: svnserve - ...

  6. mysql服务重启和关闭

    在windows下进行mysql服务重启和关闭: 1.手动开启服务:在mysql安装包bin目录下,mysqld.exe为服务器,运行后再运行mysql.exe即可: 2.在cms里手动启动:(已经对 ...

  7. Node.js中的egg入门、egg路由、egg控制器、egg服务、egg中间件

    目录 1 egg入⻔ 1.1 初始化 1.2 目录结构 1.3 内置对象 Application Context Request Response Controller Service Helper ...

  8. 基于emq x开源版实现服务重启后主题和消息恢复的完整方案(二)

    emqx_restart_resume 用于emqx开源版 服务重启后恢复原订阅主题和持久化数据 问题 开源版emq在服务重启后原订阅的主题会清空,在客户端保持原clientId,保持原session ...

  9. docker服务重启后自动重启容器

    今天在对dockder容器重启后发现有两个镜像没有启动,于是使用以下命令查到docker镜像ID: docker ps -a 使用一下命令对镜像从起: docker restart imageid 在 ...

  10. 基于emq x开源版实现服务重启后主题和消息恢复的完整方案

    emqx_restart_resume 用于emqx开源版 服务重启后恢复原订阅主题和持久化消息 问题: 开源版emq在服务重启后原订阅的主题会清空,在客户端保持原clientId,保持原sessio ...

最新文章

  1. 尹伊:Datawhale做的一件事
  2. LINQ to XML 常用操作(转)
  3. SAP Spartacus Spinner控件显示原理
  4. CouchDB未授权访问漏洞记录(端口:5984、6984,CVE-2017-12635,CVE-2017-12636)复现失败
  5. 使用sklearn预测走势_Prophet: 时间序列预测库
  6. [转载] Python字符串:大写 str.upper()
  7. 《java入门第一季》之面向对象(static关键字内存图解)
  8. OSGEarth基于经纬度获取高程数据
  9. weico.android批量转发,weico android|Weico新浪微博3.3.5 客户端_手机软件
  10. 计算机病毒如何彻底去除,电脑中病毒最彻底的清除方法 彻底清理删除电脑病毒的几种简单方法...
  11. win7与internet时间同步出错_如何解决Win7时间同步出错的问题
  12. 云服务器ECS能做什么用途?
  13. 网络克隆自动修改计算机名ip,网络克隆之自动更改IP地址和计算机名
  14. 【互联网那些事】到底什么是互联网思维
  15. 如何监控前端页面FPS
  16. Git GitHub Gitee使用方法
  17. Halcon一维码识别实例
  18. r语言导出文件为xlxs_R语言数据导出到Excel表格-如何将R语言中的表格数据输出为Excel文件...
  19. KEIL 调试经验总结
  20. ECharts 柱状图上显示数据,并自定义图标

热门文章

  1. CCS12.0 安装并设置中文
  2. 二、信号分解 —> 变分模态分解(VMD)学习笔记
  3. 测试象棋水平用哪个软件好,佳佳象棋软件作者李国来对象棋软件引擎的专业看法及测试指导...
  4. 如何备份linux,如何备份Linux系统
  5. ArcGis CityEngine 下载地址
  6. 平面设计中的网格系统pdf_哪些设计师必看平面设计书籍,写给设计师
  7. python出行轨迹记录_Python中的自动路径绘制,python,轨迹
  8. mt4双线macd_指标之王——MACD的精髓用法,八张图完美诠释最佳买入点,牢记不愁买卖!...
  9. 爬虫---如何抓取app的思路和方案
  10. 数据库入门级学习(1)