使用shell脚本守护node进程

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

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

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

在项目根目录下,创建start.sh: 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框架)示例

代码结构:
express代码结构

start.sh内容:

start.sh

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

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

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

启动start.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值