使用shell脚本守护node进程

来源:互联网 发布:慧莫森软件科技 编辑:程序博客网 时间:2024/05/21 08:56

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

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

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

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

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

启动:sh start.sh &

停止:

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

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

第2步:ps -ef | grep node

kill -9 xxx //终止node进程


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

代码结构:
express代码结构

start.sh内容:

start.sh

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

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

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

启动start.sh

0 0