shell 脚本灵异事件 求大神帮忙分析一下
现有 springboot.sh 用来启动和停止应用的 如 /opt/8848/springboot.sh restart /opt/8848/dfepay-api-1.0.0.jar
现在需要在启动应用时加参数 所以我为脚本加了一个参数 nohup java $3 -jar $SpringBoot > /dev/null 2>&1 &
启动脚本就变为 /opt/8848/springboot.sh restart /opt/8848/dfepay-api-1.0.0.jar -Dxxxx
这些都没问题 现在 我们要使用 skywalking 所以需要指定 javaagent
神奇的事情发生了 只要最后一参数里包含 java stop 的时候就会出问题
boot_id=ps -ef |grep java|grep $SpringBoot|grep -v grep|awk '{print $2}'
chqtvl-ertwxt-a01:/opt/8848 # /opt/8848/springboot.sh restart /opt/8848/dfepay-api-1.0.0.jar jav ps -ef |grep java|grep /opt/8848/dfepay-api-1.0.0.jar|grep -v grep|awk ‘{print }’
Stop /opt/8848/dfepay-api-1.0.0.jar, ^C chqtvl-ertwxt-a01:/opt/8848 # ^C chqtvl-ertwxt-a01:/opt/8848 # /opt/8848/springboot.sh restart /opt/8848/dfepay-api-1.0.0.jar java ps -ef |grep java|grep /opt/8848/dfepay-api-1.0.0.jar|grep -v grep|awk ‘{print }’ 12873 12880 Stop /opt/8848/dfepay-api-1.0.0.jar,12873 12880 Terminated
会找到两个不存在的进程 然后报错
有没有大佬知道咋回事 第三个参数只要不包含 java 就没问题
关键是 kill 的过程中跟第三个参数一点关系都没有呀 根本没使用到第三个参数 为啥会这样呢