码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • sh启动jar后判断启动成功后退出


    场景

    1. 编写一个start.sh脚本,使用jar启动springboot工程

    2. 想要启动后,脚本自动退出

    3. 最好是判断出启动成功了,再退出

    设计

    1. 利用nohup实现守护进程和&实现可以退出当前窗口

    2. 利用tail -fn  --pid 追查文件最新末尾,并且只看新输入的变动(n 0控制的),并且在pid指定的进程完成后,退出tail。

    备注:

    1. 不使用n 0的话,只用tail -f,会导致先加载文件的内容到末尾,此时如果sed有匹配的内容,就会直接退出了。使用n 0就可以永远只监听最新新输入的变动,从而避免这个情况。

    3. 使用sed匹配关键字,并搭配/q,在匹配到内容后退出sed进程。

    demo

    启动jfqqqq.jar:

    1. #!/bin/sh
    2. echo 'start jfqqq.jar'
    3. nohup java -jar jfqqq.jar --server.port=8888 --logging.level.root=info &
    4. tail -fn 0 --pid=`ps uxh|grep "sed /Started jfqqq in/Q"|grep -v "grep" | awk '{ print $2 } ' | sort -nr | head -1 ` nohup.out|sed '/Started jfqqq in/Q'
    5. echo 'start succeed!'

    完成

    tips:

    1. sed 匹配时,匹配内容使用‘’和不使用‘’号下,空格可以有两种表达:

    A. sed '/Started Viewer in/Q'

    B. sed /Started[[:space:]]Viewer[[:space:]]in/Q

    2. 针对1,grep时,可以不考虑单引号“’”

    比如:

    tail -fn 0 --pid=`ps uxh|grep "sed /Started Viewer in/Q"|grep -v "grep" | awk '{ print $2 } ' | sort -nr | head -1 ` nohup.out|sed '/Started Viewer in/Q'
    

    里边grep处的sed /Started...就没有写为"sed '/Started",虽然后边的sed命令使用了"'"。

    3. echo时,想换行

    这三个都无法直接回车:

    1. echo \n--------------- start succeed! ----------------------
    2. echo \\n--------------- start succeed! ----------------------
    3. echo '\n--------------- start succeed! ----------------------'
    4. echo "\n--------------- start succeed! ----------------------"

    效果:

     这样可以:

    1. echo -e '\n--------------- start succeed! ----------------------'
    2. echo -e "\n--------------- start succeed! ----------------------"

     

  • 相关阅读:
    Webpack--CSS、Sass、Scss的import中~(波浪线)的作用
    林乐博士走进中国人民大学,讲述区块链的理解与实践
    Collection接口中包含什么呢?
    PHP 发送邮件
    R语言ggplot2可视化地图并使用scale_fill_gradient函数自定义设置地图颜色刻度为灰色梯度刻度(grey gradient scales)
    Eclipse如何搭建一个SpringBoot项目
    【GlobalMapper精品教程】026:影像黑边白边出现的原因及解决办法汇总
    List 实现
    gin+vue零基础入门教程
    OpenTiny Vue 支持 Vue2.7 啦!
  • 原文地址:https://blog.csdn.net/jfqqqqq/article/details/126519666
  • 最新文章
  • 你的Agent API还在裸奔?从认证到沙箱,我用FastAPI搭了几道防线
    13、PushbackInputStream和StreamTokenizer的源码分析和使用方法详细分析
    上周热点回顾(5.11-5.17)
    .NET 8 Web开发入门(五):构建盾牌——数据验证与全局异常处理
    [深度学习] 大模型学习8上-推理部署框架llama.cpp与Ollama使用指北
    架构融合:Activity Host 作为确定性编排与认知智能代理的桥梁
    图生视频模型训练数据集
    为什么 AI 助理总不好用?因为它不知道你发生了什么!
    ERC-7730:解析签名意图,消除盲签风险
    RAG学习笔记(2):关于rag和模型微调,同一个问题它们分别怎么处理
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号