一、Linux 运行jar包的几种方式

  • 方式一: java -jar xxx.jar

最常用的启动jar包命令,特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出

  • 方式二: java -jar xxx.jar &

&代表在后台运行 ,ctrl+c 后程序也会继续运行

  • 方式三: nohup java -jar xxx.jar &

nohup 即 no hang up 不挂断 ,关闭SSH客户端连接,程序不会中止运行

缺省情况下该作业的所有输出被重定向到nohup.out的文件中,如何让输出的内容重定向到指定的文件呢?

  • 方式四:nohup java -jar xxx.jar >aaa.log &

command >out.file 是将commandd 输出重定向到out.flie文件,即输出内容不打印到屏幕上,而是输出到out.file文件中

  • 方式五:nohup java -jar spring-boot-demo.jar > springboot.log 2>&1 &

  • 方式六:nohup java -jar spring-boot-demo.jar > /dev/null 2>&1 &

​ 不输出日志

二、nohup 和 &

使用&后台运行程序:
  • 结果会输出到终端
  • 使用Ctrl + C,程序免疫
  • 关闭session,程序关闭
使用nohup运行程序:
  • 结果默认会输出到nohup.out
  • 使用Ctrl + C,程序关闭
  • 关闭session,程序免疫

平日线上经常使用nohup&配合来启动程序

三、> /dev/null 2>&1

  • > 标准重定向符,允许我们创建一个 0KB 的空文件。它通常用于重定向一个命令的输出到一个新文件中。在没有命令的情况下使用重定向符号时,它会创建一个文件。

  • /dev/null 可以看作黑洞,等价于一个只写文件。所有写入它的内容都会永远丢失,尝试从它那儿读取内容则什么也读不到。也就是将所有产生的日志将被丢弃

  • 2>&1 符号>&是一个整体代表将标准错误2重定向到标准输出1,如果是2>1的话,代表将标准错误输出到文件1,而不是重定向到标准输出流

​ 先了解下1和2在Linux中代表什么

​ 当Linux执行一个程序时,会自动打开三个流

0:标准输入流(默认是键盘)
1:标准输出流(默认是屏幕)
2:标准错误流(默认是屏幕)

名称 代码 操作符 java中表示 Linux中文件描述符
标准输入(stdin) 0 < 或 << System.in /dev/stdin -> /proc/self/fd/0 -> /dev/pts/0
标准输出(stdout) 1 >, >>, 1> 或 1>> System.out /dev/stdout -> /proc/self/fd/1 -> /dev/pts/0
标准错误输出(stderr) 2 2> 或 2>> System.err /dev/stderr -> /proc/self/fd/2 -> /dev/pts/0

​ 从上表看出,平常使用的 echo 'hello' > a.log 可以写成 echo 'hello' 1> a.log

​ 为什么2>&1要放在后面 ? 如下一条shell命令 nohup java -jar app.jar >log 2>&1 & 我们不妨把1和2都理解是一个指针,然后来看上面的语句就是这样的:

​ 本来1----->屏幕 (1指向屏幕)
​ 执行>log后, 1----->log (1指向log)
​ 执行2>&1后, 2----->1 (2指向1,而1指向log,因此2也指向了log)

​ 再来分析下nohup java -jar app.jar 2>&1 >log &
​ 本来1----->屏幕 (1指向屏幕)
​ 执行2>&1后, 2----->1 (2指向1,而1指向屏幕,因此2也指向了屏幕)
​ 执行>log后, 1----->log (1指向log,2还是指向屏幕)
​ 所以这就不是我们想要的结果。

​ 每次都写">log 2>&1"太麻烦,能简写吗?可以简写成 &>log>&log

nohup java -jar app.jar 2>&1 >log & 简写成:nohup java -jar app.jar &>log &

全网最全Linux 运行jar包的几种方式相关推荐

  1. Linux 运行jar包的几种方式

    nohup java -jar wechat-push-0.0.1-SNAPSHOT.jar > wechat-push-0.0.1.out 2>&1 & 一.Linux ...

  2. linux 后台运行jar包命令,Linux 运行jar包命令(Cent OS 7后台运行jar包)

    Linux 运行jar包命令如下: 方式一 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 java -jar shareniu. ...

  3. Linux 运行jar包命令如下:

    Linux 运行jar包命令如下: 方式一: java -jar XXX.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二: ...

  4. docker部署jar包的几种方式

    docker部署jar包的几种方式 前言 使用Dockerfile手动打包jar 简单打包运行 进化:可复用容器 究极进化:jdk镜像直接创建可服用容器 超究极进化:maven插件打包(不推荐) 无聊 ...

  5. Eclipse下导入外部jar包的3种方式

    转载自  Eclipse下导入外部jar包的3种方式   我们在用Eclipse开发程序的时候,经常要用到第三方jar包.引入jar包不是一个小问题,由于jar包位置不清楚,而浪费时间.下面配图说明3 ...

  6. Intellij IDEA 添加jar包的三种方式

    Intellij IDEA 添加jar包的三种方式 inzaghihalo https://blog.csdn.net/superinzaghi747/article/details/80539095 ...

  7. Linux运行jar包命令

    一. linux下运行jar包的命令 1.java -jar xxxxx.jar // 当前xshell窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 2.java -jar ...

  8. Linux 运行 jar包

    1.运行Jar包 第一种方式 java -jar xxx.jar 最基本的方式,程序运行的信息会一直输出在控制台,ctrl+c中断或者关闭窗口时,程序中断执行. 第二种方式 java -jar xxx ...

  9. idea中java程序打jar包的两种方式(超详细)

    java程序打成的jar包有两种类型,一种是可直接执行的runnable jar文件,另一种是包含多个主类,运行时需要指定主类全类名的jar包,下面我们细说在idea中两种jar包的打包方法及执行ja ...

最新文章

  1. Codeforces Round #366 (Div. 2)
  2. pku 3411 Paid Roads DFS+灵活技巧卡节点访问次数
  3. python使用教程pandas-十分钟搞定pandas(入门教程)
  4. Linux服务-FTP文件服务器部署
  5. 新版 C# 高效率编程指南
  6. 一些很有意思的JS现象
  7. Linux进程共享通信 -- mmap实现
  8. android string.format()长度,Android通过String.format格式化(动态改变)字符串资源的显示内容...
  9. Redis常问面试题及答案
  10. 微课|玩转Python轻松过二级(2.1.1):常量与变量
  11. matlab.什么意思,MATLAB是什么意思? matlab是什么软件?
  12. Usb设备驱动5:usb-firmware简易框架
  13. 第十章 深度强化学习-Prioritized Replay DQN
  14. Python音频操作工具PyAudio上手
  15. java sqlite sqlite_busy_sqlite3 busy timeout
  16. Super-pack按键精灵安卓离线打包发布
  17. PLY文件读取与显示
  18. uniapp-获取省市区地址及内部高德sdk的使用
  19. 微信小程序分页功能(上拉触底事件)
  20. 离线安装VS2019教程

热门文章

  1. SQL语句中Cast的用法
  2. hwc2 surfaceflinger启动流程分析
  3. c++ for循环执行流程
  4. 华为云康宁:云上有为 | 企业智能转型的工业底座
  5. 4项目管理--项目整合管理
  6. VSCode产生的ipch文件夹占用C盘空间过大处理
  7. 智慧公厕系统的应用示例
  8. 基于PHP+MySQL的自习室图书馆座位管理系统
  9. jenkins java.io.IOException: Failed to load: Git plugin
  10. I. Invoking the Magic