#!/bin/bash

#通常用作注释,#和!连在一起并且放在首行表示该脚本由什么去解释,标志着这是一个shell script

详细解释:https://kknews.cc/code/96vkgol.html

echo "测试打印输出"

echo是linux下的打印输出命令,命令的输出内容如果没有特殊含义,则原内容输出到屏幕;如果输出内容有特殊含义,则输出打印其含义

更多使用方式:http://c.biancheng.net/view/934.html

  • $0 : 编写的shell脚本本身的名字
  • $1 : 运行shell脚本传的第一个参数
  • $2 : 运行shell脚本传的第二个参数
  • $? : 上条命令的返回值  0:表示没有错误,其他任何数值:表示有错误
  • $!  : 后台运行的最后一个进程的 ID 号

更多使用方式:https://www.jb51.net/article/220865.htm

判断服务是否已开启:通过ps命令查看服务是否正在运行,以查询mysql为例

如果存在查询结果则表示服务正在运行,已开启

appName=mysql
port=3306
ps -ef | grep $appName| grep $port| grep -v grep | grep -v sudo

grep -v 参数 : 过滤掉指定参数的查询结果  例如grep -v grep 过滤掉查询结果中包含grep的

查询到服务的进程信息后如上图所示

列名从左到右依次是UID       PID       PPID      C     STIME    TTY       TIME         CMD

pid即进程id,我们可以通过pid是否存在  判断  服务是否正在运行

获取进程id,我们可以清楚的看到pid在查询结果信息的第二列

pid=$(ps -ef | grep $appName | grep $port  | grep -v grep | grep -v sudo | awk '{print $2}') 

awk '{print $2}' 是获取当前行的第二列,也就是pid

那么如果查询结果pid不为空则说明服务已开启

在中括号里通过-z判断值是否为空    更多使用方式:https://www.jb51.net/article/186182.htm

变量的值,为空,返回0,为true

变量的值,非空,返回1,为false

if [ -z "$pid" ]
thenecho "服务没有运行"
elseecho "服务正在运行"
fi

稍稍改造下,写个简单完整的启动脚本

#!/bin/bash
#jar包名称
appName=test01
#服务端口号
port=8888
#查询服务是否正在运行
pid=$(ps -ef | grep $appName | grep $port  | grep -v grep | grep -v sudo | awk '{print $2}') if [ -z "$pid" ]
thennohup java -Xmx1g -Xms1g -jar -Dserver.port=$port  -Dspring.profiles.active=dev -Dlogging.path=./logs /home/data/app/test01/$appName.jar 1>/dev/null 2>/dev/null &
elsekill -9 $pidnohup java -Xmx1g -Xms1g -jar -Dserver.port=$port  -Dspring.profiles.active=dev -Dlogging.path=./logs /home/data/app/test01/$appName.jar 1>/dev/null 2>/dev/null &
fi

将脚本上传到服务器上,如果提示没有权限运行,可以查看是否有读写权限

ls -l test.shchmod 777 test.sh 

nohup命令

方式一:java -jar  xxx.jar  这种方式启动是在前台运行,命令行会被占用,即当前ssh窗口会被锁定 持续输出运行信息,这样我们就不能在这个窗口下执行其他命令,如果要继续在当前窗口下操作命令,按下ctrl+c 打断程序的运行,这种方式启动关闭窗口也会终止程序

方式二:java -jar xxx.jar & 这种方式启动是后台运行(&),命令行不会被占用 但是关闭当前窗口,程序会被终止

方式三:nohup java -jar xxx.jar & 后台启动,命令行不会被占用,关闭窗口也不会终止程序nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行,当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件

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

>/dev/null 2>&1是将标准输出和错误输出都重定向/dev/null,/dev/null可以理解为垃圾桶、黑洞,将无用的输出都重定向到这里,程序运行产生的日志我们通过日志框架的相应策略放到指定位置

注:1>/dev/null 2>/dev/null 和 >/dev/null 2>&1含义相同,只是写法不同

详细介绍:https://www.jb51.net/article/169837.htm

springboot启动脚本相关推荐

  1. 一份超经典SpringBoot启动脚本

    前言 相信大家在网上已经看到关于SpringBoot的启动脚本了,但是,我认为那些都不够经典.因为,我们项目组的大佬教给了我一份启动脚本,让我受益匪浅. 启动方法 1.通过 java -jar xxx ...

  2. springboot应用启动原理(一) 将启动脚本嵌入jar

    Spring Boot Takes an opinionated view of building production-ready Spring applications. Spring Boot ...

  3. springboot启动时初始化sql脚本

    文章目录 1.初始化mysql数据库脚本 1.使用springboot jdbc初始化数据库 2.使用原生mybatis执行sql脚本 3.改良springboot jdbc初始化数据库 参考地址 基 ...

  4. springboot项目jar包启动脚本

    当工具用习惯了.也就懒的去关心底层的东西了.项目部署的时候,用习惯了jenkins也就不关心运维写的脚本了.但是当工具出问题,那就要从最基础的脚本来部署项目.脚本我也不太懂,在这里只是与大家一起分享启 ...

  5. Linux(中科方德服务器版4.0)springboot启动多个服务脚本开机自启

    1.在/etc/init.d/目录下创建shell启动脚本autojar.sh vim /etc/init.d/autojar.sh #!/bin/sh #chkconfig: 2345 80 90 ...

  6. springboot默认日志配置及程序启动脚本

    前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候,是带着下面几个问题来查资料的,你呢 如何引入日志? 日志输出格式以及输出方式如何配置? 代码中如何使用? 正文 Sp ...

  7. Tomcat和Springboot自启动脚本

    这里写自定义目录标题 Tomcat自启动脚本配置 通过VIM添加tomcat-monitor.sh脚本 给文件赋可执行权限 执行脚本文件 添加定时任务 Springboot自启动脚本 Spring b ...

  8. JAVA项目启动脚本编写的一些笔记整理

    写在前面 公司项目里看到,之前的项目都是在物理机部署的,而且大都是Server,没搞过,这里整齐学习. 博文分为两部分: 项目启动脚本总结,java常用启动参数,,启动参数部分参考 流年似水,有些事情 ...

  9. ubuntu 设置开机执行脚本_ubuntu-18.04 设置开机启动脚本

    ubuntu-18.04 设置开机启动脚本 参阅下列链接 ubuntu-18.04不能像ubuntu14一样通过编辑rc.local来设置开机启动脚本,通过下列简单设置后,可以使rc.local重新发 ...

最新文章

  1. 使用Data::Dumper
  2. php html_entity_decode 标签没有闭合,php – strip_tags和html_entity_decode组合无法按预期工作...
  3. 单例设计模式-ThreadLocal线程单例
  4. Unity使用协程技术制作倒计时器
  5. C#easyui combotree 设置节点折叠
  6. 模型部署到移动端_谷歌开源 MobileNetV3:新思路 AutoML 改进计算机视觉模型移动端...
  7. 工作67:el-table问题
  8. mysql 图片base64_关于图片的Base64编码
  9. 考上MBA,为自己装一双翅膀
  10. Python爬虫小白入门(六)爬取披头士乐队历年专辑封面-网易云音乐
  11. SoapUI 使用教程链接
  12. 【线性代数】矩阵分解(Matrix Factorization)笔记:非负矩阵分解(实践)
  13. oracle12c用plsql连不上,PLSQL连接oracle12c
  14. 快速入门Sqlite数据库应用
  15. 虚拟机是什么?有什么用
  16. 程序员的10大境界,计算科学的10层楼,比尔盖茨看了会自卑,牛顿看了会落泪!
  17. 暗黑风java战棋游戏_简约而不简单的类暗黑战棋游戏
  18. 《A non-contact eye-gaze tracking system for human computer interaction》论文阅读
  19. asp.net 母版页使用详解
  20. 去中心化数字身份DID简介——三、用户属性的选择性披露

热门文章

  1. Adversarial Examples:Attacks and Defenses for Deep Learning Networks
  2. 砸开百度与企业网生财(来自:alibaba商人论坛:侯伯斯 的帖子)
  3. Easy CHM 使用手册
  4. 多线程Java聊天室
  5. Oracle导出AWR报告
  6. K8S离线安装kubeadm报错:conntrack is needed by kubelet
  7. 媒体融合之融媒体中心建设标准解读
  8. 邮箱发送验证码实现注册(QQ邮箱)
  9. Xshell 6 Xftp 6安装与使用教程
  10. 第一次申请加薪,我是如何实现涨幅超30%的?