弄清楚nodejs是否崩溃了

时间:2015-03-20 15:18:31

标签: node.js bash

基本上每次我想将更改推送到我的服务器时,我都会经历这个工作流程。:

node app.js
//if above not crashed
git push heroku <branchname>
git push origin <branchname>

我想编写一个脚本,为我完成所有这些操作。如果运行节点app.js崩溃,我需要在脚本中找到。我该怎么做呢?

修改

Sam在下面的回答检测节点是否崩溃,但是如果它没有继续运行。我想我想要的是:start node。等30秒。如果仍在运行,请继续执行脚本的其余部分

2 个答案:

答案 0 :(得分:0)

取决于“崩溃”的含义,但如果节点进程出错,则应该有一个非零退出代码,您可以在脚本中进行测试:

#!/bin/bash
node app.js
if [ $? != 0 ] 
then
   echo "app.js failed; exiting"
   exit 1
fi
git push heroku branchname
# etc.

如果您还想检测node没有错误终止的情况,但您的脚本app.js出错,请确保process.exit(code)代码为非零。

答案 1 :(得分:0)

我认为该节点不会在后台自动启动,所以:

node app.js &
node_pid=$!
sleep 30

if kill -0 $node_pid 2>/dev/null; then
    # still running
    git push heroku $branchname
    git push origin $branchname
fi

发送一个进程0信号是一种方便的方式,看它是否还活着。