使用shell脚本写一个守护进程,监听3003端口,是否有被使用,若没有,则开启
#!/bin/sh
cmd=$1
port=3003
if [ -n "$cmd" ]
then
# 守护进程[ nohup sh run.sh 1 & ]
while true
do
sleep 3;
# 根据端口号查询对应的pid
pid=$(netstat -nlp|grep :$port|awk '{print $7}'|awk -F"/" '{ print $1 }')
# 如果pid不存在,则启动进程
if [ ! -n "$pid" ];then
# echo "开启npm run start"
nohup npm run start > /var/log/web/user.log 2>&1 & continue
fi
# echo '进程守护中......'
done
else
# 重启进程[ sh run.sh]
# 根据端口号查询对应的pid
pid=$(netstat -nlp|grep :$port|awk '{print $7}'|awk -F"/" '{ print $1 }')
#杀掉对应的进程,如果pid不存在,则不执行
if [ -n "$pid" ];then
kill -9 $pid
echo "杀掉已有进程ID: ${pid}"
echo "重新执行npm run start..."
nohup npm run start > /var/log/web/user.log 2>&1 & exit
else
echo "开启npm run start"
nohup npm run start > /var/log/web/user.log 2>&1 & exit
fi
fi