使用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端口的进程号不为空,说明启动成功

 

 

posted @ 2017-04-24 15:22  蓝之矾  阅读(1654)  评论(0编辑  收藏  举报