基本上每次我想将更改推送到我的服务器时,我都会经历这个工作流程。:
node app.js
//if above not crashed
git push heroku <branchname>
git push origin <branchname>
我想编写一个脚本,为我完成所有这些操作。如果运行节点app.js崩溃,我需要在脚本中找到。我该怎么做呢?
修改
Sam在下面的回答检测节点是否崩溃,但是如果它没有继续运行。我想我想要的是:start node。等30秒。如果仍在运行,请继续执行脚本的其余部分
答案 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
信号是一种方便的方式,看它是否还活着。