【BUG++】Shell脚本中的exec语法问题处理(ctrl+c命令异常终止项目问题)

问题场景

最近笔者部署新项目时,发现项目能正式运行,同时也读取到远程nacos配置信息,由于项目总是会异常终止,这里在日志打印过程中,每次使用ctrl+c终止日志输出后,项目就会终止,日志查看显示如下
在这里插入图片描述

问题分析与处理

项目本身是可以正常运行的,接口也在正常调用和输出日志。每当执行Ctrl+C命令后,程序也被终止了。看了下自己的启动脚本是这样的

#!/bin/bash
#1,获取、进程号
PID=$( ps -ef|grep  tw-wx-map | grep -v grep | awk '{print $2}')
#2,启动 xx-wx-map.jar的函数
start(){
   echo "start_wx"
   exec nohup java -jar   /home/ap/xx-wx-map/tw-wx-map.jar > /home/ap/xx-wx-map/wx.out 2>&1 &
   echo "end_wx"
   tail -f wx.out
}
#3,判断1中获取的PID是否存在,即判断 xx-wx-map.jar有没有启动
 if [ -z "$PID" ]
then
#4,日志
    echo "Sart the  xx-wx-map directly "
#5, xx-wx-map.jar之前没有启动的话,这里直接调用start函数
    start
    echo "go start"
else
#6, xx-wx-map之前启动过且进程依然存活,则kill掉,然后调用start函数
    echo "kill the existing  xx-wx-map process firstly."
    kill -9 $PID
    echo " $PID has been killed"
    start
fi

这边笔者测试后发现,问题在这个exec语法,
在Shell脚本中,exec命令用于替换当前shell进程,并执行指定的命令或程序。这意味着调用exec之后,原来的shell脚本将不再继续执行任何后续命令。将exec在语句中去掉后,项目的这个异常问题也就解决了。

补充

退出日志打印页面,可以按照以下方式操作:
对于 cat,可以尝试 Ctrl+C 或者 Ctrl+D。
对于 more 和 less,可以按 q 键。
对于 tail -f,可以使用 Ctrl+C。

尾言

以上就是笔者对这次bug的分析和处理,后续有相关补充也会更新上去,有需要的同学可以参考下。

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值