您的位置:首页 > 运维架构 > Shell

使用shell脚本守护node进程

2017-04-24 15:22 246 查看
现在开源的守护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端口的进程号不为空,说明启动成功

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: