由于最近写的Node.js程序因为一些Bug,会出现一些自动退出的问题,所以需要在它退出的时候及时发现,并重新启动
于是查阅了些资料,写了一个Bash的程序,功能十分简单,就是每隔3s判断一次处在6000端口的node程序是否正在运行,如果没有发现6000端口,那么执行启动程序的命令,已经使用了一段时间,感觉效果蛮好的,简单小巧,安全可靠,记录一下,以便以后使用。
#!/bin/bash BASEDIR='/server' while true; do PRO_NOW=`netstat -tunlp| grep "6000" | wc -l 2>/dev/null` if [ $PRO_NOW -eq 0 ]; then cd $BASEDIR node ./bin/www > /tmp/run_node.log 2>&1 & else echo "`date` 6000 is listening..." fi sleep 3 done
BASEDIR就是项目的目录,程序很简单,变通下可以“守护”不少程序
启动的话,就用nohup,node程序可能会因为BUG退出,但是用nohup启动这个却bash不会出现什么问题
nohup ./runing.sh &
是不是很方便呢