一个极简的守护进程Bash脚本

时间:2021-05-20 14:53:24

由于最近写的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 & 

是不是很方便呢