shell 脚本灵异事件 求大神帮忙分析一下

2020-04-17 13:03:20 +08:00
 yangyuhan12138

现有 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 的过程中跟第三个参数一点关系都没有呀 根本没使用到第三个参数 为啥会这样呢

3137 次点击
所在节点    Java
22 条回复
yangyuhan12138
2020-04-18 15:58:26 +08:00
@ps1aniuge 看了一下 这是啥语法...看起来不像 shell 啊 能同时在 win 和 linux 上跑?
ps1aniuge
2020-04-18 16:13:03 +08:00
我思考了楼主类似的情况,重写了我的那个脚本,变成了“jc 检测 [win-linux 进程命令行中] 关键字的并发数 z4.ps1” ,会返回进程 id 数组。
现正在抓紧时间调试,2----3 天后上传。敬请期待。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/663402

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX