一、启动脚本

Springboot 项目打成jar包后,在Linux环境上一般有如下几种启动方式:

1. “java -jar XXX.jar ”

命令结尾没有 “&” ,表示在当前ssh窗口,可按CTRL + C打断程序运行,或者直接关闭窗口,则程序直接退出

2. java -jar app.jar &

表示在当窗口关闭时,程序才会中止运行。&代表让该命令在后台执行。

3. nohub 方式启动:

& 表示后台运行,但是当用户推出终端或挂起的时候,命令也跟着退出。而nohub的意思就是 no hung up (不挂起),命令永久的执行下去,和用户终端没有关系。

nohup java -Dfile.encoding=UTF-8 -Xms2000m -Xmx2000m -jar app.jar >/dev/null 2>&1 &

参数详解:nohub : 不挂断地运行命令-Dfile.encoding=UTF-8: 字符集(可以不用设置)-Xms2000m:启动分配内存-Xmx2000m:运行最大内存-jar :jar方式启动

/dev/null >2>& 1 : 一般情况下是指定日志输出位置例如:nohup java -jar XXX.jar > Log.log &

标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。“>dev/null 2>&1” :将 标准错误 (stderr) 2 重定向到 (stdout ) 1 最终输出到 Log.log 中

dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到"禁止输出"的效果。

最后说说为什么要不想输出文件了还需需要这样做:nohub 命令缺省日志的情况下回默认将日志输出到 nohup.out 中所以要指定日志,但是不想输出日志的情况下就可以如上所做。可以创建 start.sh 文件,然后将nohub 启动命令写入即可。

二、停止脚本

ps -ef | grep app.jar | grep -v grep | awk '{print $2}' | xargs kill

命令详解:ps -ef | grep app.jar这不不用多说,就是查找app.jar 这个进程的相关信息。其中 | 是 管道符,意思就是上一条命令的输出作为下一条命令的参数。也就是说这个命令其实是两条命令。ps -ef 是第一步代表查找所有进程grep app.jar 第二步代表过滤出所有含有app.jar的进程

举个例子就是:

ps -ef|grep app.jar

root      6999     1  0 Nov04 ?        00:06:23 java -Dfile.encoding=UTF-8 -Xms2000m -Xmx2000m -jar app.jar

root      8474 29928  0 10:55 pts/1    00:00:00 grep --color=auto app.jar

但是为什么会出现两个进程呢,其中一个是 java 另一个是grep.其实在执行grep app.jar 的时候,本身也是一个进程,并且包含了app.jar 关键字,所以筛选的时候就显示出来了。其实不管有没有app.jar 这个进程,都会显示出来,随便编一个aaaa.jar 执行:

ps -ef|grep aaa.jar

root     14003 29928  0 11:04 pts/1    00:00:00 grep --color=auto aaa.jar

杀掉进程,需要知道进程号,目前有两个进程,就需要过滤掉grep这个进程。grep -v grep :就是去除去包含grep的进程 。与上面的命令通过 | 连接后的执行结果如下:

ps -ef | grep app.jar | grep -v grep

root      6999     1  0 Nov04 ?        00:06:24 java -Dfile.encoding=UTF-8 -Xms2000m -Xmx2000m -jar app.jar

可以看到已经将java进程过滤出来了。awk '{print $2}' 就是根据分割符打印出第二个参数,这里就是进程号。

xargs kill 中, xargs 是命令的作用,是将标准输入转为命令行参数。有的命令是不支持将标准输入作为参数的,也就是不支持 | 作为输出的。上面的grep 支持。什么是标准输入不多说了。这个命令也就可以看做前一步不是输入了进程号么,但是不能通过 | 传递给 kill 这个命令,只能通过xargs 转化一下。

脚本执行如果提权限问题 执行 chmod u+x *.sh即可

参考资料:

java spring启动和终止_springBoot jar启动以停止脚本参数详解相关推荐

  1. spring boot 实战 / 可执行war启动参数详解

    概述   上一篇文章<spring boot 实战 / mvn spring-boot:run 参数详解>主要讲解了spring boot 项目基于maven插件启动过程中借助profil ...

  2. JVM启动参数详解(含调优)

    java启动参数共分为三类: 其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容: 其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足, ...

  3. java前端长连接框架_Java中Spring Boot+Socket实现与html页面的长连接实例详解

    Spring Boot+Socket实现与html页面的长连接,客户端给服务器端发消息,服务器给客户端轮询发送消息,附案例源码 功能介绍 客户端给所有在线用户发送消息客户端给指定在线用户发送消息服务器 ...

  4. JVM 启动参数详解

    JVM 启动参数详解 JVM 作为一个通用的虚拟机,我们可以通过启动Java命令时指定不同JVM参数,让 JVM调整自己的运行状态和行为,内存管理和垃圾回收的GC算法等等. 直接通过命令行启动 Jav ...

  5. 04_Flink-HA高可用、Standalone集群模式、Flink-Standalone集群重要参数详解、集群节点重启及扩容、启动组件、Flink on Yarn、启动命令等

    1.4.Flink集群安装部署standalone+yarn 1.4.1.Standalone集群模式 1.4.2.Flink-Standalone集群重要参数详解 1.4.3.集群节点重启及扩容 1 ...

  6. Java Spring Data Redis实战与配置参数详解 application.properties...

    Redis作为开源分布式高并发缓存,使用范围非常广泛,主流互联网公司几乎都在使用. Java Spring Boot 2.0实战开发Redis缓存可以参考下面的步骤,Redis安装可以直接使用Linu ...

  7. 【Nginx】Nginx配置文件参数/启动参数详解;启动/停止/重新加载配置命令

    nginx配置文件 nginx及其模块的工作方式是由配置文件指定,默认情况下配置文件被命名为nginx.conf并且存放在/usr/local/nginx/conf或者 /etc/nginx或者 /u ...

  8. rcs开机启动mysql_linux添加开机自启动脚本示例详解-阿里云开发者社区

    linux添加开机自启动脚本示例详解 double2li 2017-04-14 1652浏览量 简介: linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的;一.在/etc/r ...

  9. U-Boot启动参数详解(U-Boot-2014.07版本)

    1适用性说明 表 1 开发板型号 是否支持本实验 TL437x-EVM 支持 TL437x-EasyEVM 支持 TL437x-IDK 不支持 TL437xF-EVM 支持 2U-Boot启动参数通读 ...

最新文章

  1. JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式
  2. illegal instruction错误
  3. Mysql当前模式让不记录日志_终于有人把MySQL 三大日志讲清楚了
  4. git reset后本地拉取_一份值得收藏的 Git 异常处理清单
  5. 如何修改ant-input的高度_如何利用好Solidworks零件及装配体的多种配置方法?
  6. Linux系统编程28:进程间通信之共享内存和相关通信接口(ftok,shmget,shmctl,shmat,shmdt)
  7. Python中几个操作列表的内置函数filter(),map(),reduce(),lambda
  8. Windows内存管理(3)--检查内存可用性,结构化异常处理 和 ASSERT
  9. 详解Python生成器函数和生成器对象的原理和用法
  10. 剑指offer——面试题45:圆圈中最后剩下的数字(孩子们的游戏)
  11. Java1.8新特性学习笔记
  12. 爱尚QQ网修改QQ在线机型源码
  13. 0004-EMC电磁兼容RE辐射超标整改策略-学习笔记
  14. python写网络爬虫的环境搭建(windows完整版)
  15. poj 2955 区间dp
  16. 号外!微信企业版真的来了
  17. 《程序员》:唯品会双11大促技术保障实践
  18. 高通平台TP和LCD 驱动Porting流程
  19. Android EditText控制输入字符限制的方法
  20. 中国酒庄行业经营状况及营销策略分析报告(新版)2022-2027年

热门文章

  1. 现代3D图形编程学习-关于本书(译)
  2. 人脸检测中,如何构建输入图像金字塔
  3. C# 弹出确定、取消窗口
  4. 【Tool】Augmentor和imgaug——python图像数据增强库
  5. win10系统下安装mysql
  6. Python中__new__和__init__区别
  7. 控制uibutton的title范围
  8. TFS2010迁移后Web工作项访问提示:error HRESULT E_FAIL has been returned from a call to a COM component....
  9. QQ vs 360的战争之我见
  10. iOS逆向之Protocol Witness Table的汇编实现原理