zoukankan      html  css  js  c++  java
  • 使用shell脚本守护node进程

    现在开源的守护node进程的包有不少,比如forever,pm2,这里我就不再赘述了。

    但是有的公司生产服务器是不能联网的,而这些包都需要全局安装,必须要网络环境。难道你nohup node app.js& 就能放心把项目扔在服务器上运行吗?

    这里我们可以用shell写一个小脚本,监控项目端口号,一旦进程为空,重启node服务。

    在项目根目录下: vim start.sh,内容如下:

     #!/bin/bash
    echo "start app.js"
    while true  
    do
    # 获取5000端口的进程号
    pid=${lsof -i:5000|awk '{print $2}'}  
    echo ${pid}
    # 如果进程号为空,重启服务
    if [ "${pid}"=="" ] 
    then
    echo "restart..."
    nohup node ./bin/www &
    fi
    sleep 5
    done

    启动:

    sh start.sh &

    停止:

    第1步:ps -ef | grep start.sh

    kill -9 xxx  //终止start.sh进程

    第2步:ps -ef | grep node

    kill -9 xxx  //终止node进程


     下面是我的项目(express框架)示例

    代码结构:

     start.sh内容:

    首先查询5000端口进程号为空,说明5000端口没有被占用;

    执行 sh start.sh &,启动项目;

    再次查询5000端口的进程号不为空,说明启动成功

     

  • 相关阅读:
    2014-5-28 技能
    Python的包管理工具Pip
    vi 命令 使用方法
    oracle实例名,数据库名,服务名等概念差别与联系
    自己动手写操作系统--个人实践
    D3DXMatrixMultiply 函数
    port大全及port关闭方法
    原型模式
    ExecuteScalar
    第三章_JSP
  • 原文地址:https://www.cnblogs.com/wuwanyu/p/6757055.html
Copyright © 2011-2022 走看看