Linux中jar包的启动脚本解析及问题

搭建运行环境时,把jar包打好外,我们还需要一个启动脚本,新建一个文件start.sh,内容如下:

ps -ef | grep dvmrms | grep -v grep | awk '{print $2}' | xargs kill -9

nohup java -jar dvmrms.jar >/dev/null 2>&1 &

sleep 10s

tail -100 ./logs/dvmrms_log_file.log

着重解释下ps -ef | grep dvmrms | grep -v grep | awk ‘{print $2}’ | xargs kill -9命令

  1. ps -ef | grep dvmrms 这个命令了解linux命令的同学都知道是查找dvmrms的进程,当项目运行时我们执行一下这个命令,可以看到有两个进程
    在这里插入图片描述

  2. grep -v grep 这个命令可以过滤掉查找进程的自身这条命令,grep -v name是查找不包含name的内容,所以在ps -ef命令执行后查出的两条内容中再执行grep -v grep便可以得到我们想要的运行的项目进程
    在这里插入图片描述

  3. awk ‘{print $2}’ 是截取第二列数据,上图中我们查找的进程内容,第二列就是进程号(pid),所以通过此命令获得该进程号
    在这里插入图片描述

  4. 最后xargs kill -9 命令就是把前面的输出作为后面命令kill -9 的输入,也就是传左边命令截取的进程号给命令kill -9,就完成了关闭项目的操作了

  5. 关掉进程后,我们再启动项目就使用nohup java -jar dvmrms.jar >/dev/null 2>&1 &命令后台启动项目

  6. sleep 10s
    tail -100 ./logs/dvmrms_log_file.log
    这两个命令就是先等待10秒,将 ./logs/dvmrms_log_file.log文件中的后100行内容打印出来
    这个./logs/dvmrms_log_file.log文件路径是我们项目中logback.xml指定的日志的格式和输出位置,各位同学可以根据自己项目的情况自己修改。


如果执行脚本时遇到 $‘\r‘: command not found 错误
是因为脚本在Windows系统编写时,换行是\r\n,而在Linux系统中换行是\n。
所以在Linux中运行脚本时,系统会认为\r是一个真实的字符(不是换行符),导致运行错误。

解决方法:
linux系统的脚本去掉\r,执行以下命令即可(该命令自动重写覆盖):

sed -i 's/\r//' start.sh
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值