问题分析

linux经常遇到程序异常退出,特别是golang程序,退出后需要手动启动,非常麻烦,除了使用守护程序,还可以编写bash命令,然后用nohup监控.

代码实现

新建一个r.sh

#!/bin/bash
while :
do
  COUNT=`ps -ef | grep ./weui6 |wc -l`
  if [ "$COUNT" -gt 1 ];
  then
    echo "服务已存在"
  else
    echo "服务不存在,重启中..."
    nohup ./weui6 > log.log 2>&1 &
  fi
  sleep 60
done

上边代码中,weui6就是启动程序本身,每60s检查一次程序是否异常退出. 然后用nohup监控 nohup ./r.sh > r.log 2>&1 & 如果需要关闭nohup 使用 ps -ef | grep r.sh 然后 kill pid就能关闭