Linux 运行jar包命令 java

Linux 运行jar包命令如下:
方式一

java -jar XXX.jar  

特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出

方式二:

java -jar XXX.jar &  

&代表在后台运行。

特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。

方式三:

nohup java -jar XXX.jar &  

nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行

当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。

方式四:

nohup java -jar XXX.jar >temp.txt &  

解释下 >temp.txt

command >out.file

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

可通过jobs命令查看后台运行任务

jobs  
  1. 那么就会列出所有后台执行的作业,并且每个作业前面都有个编号。
  2. 如果想将某个作业调回前台控制,只需要 fg + 编号即可。
fg 23  

Shell脚本———— /dev/null 2>&1详解

1、可以将/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用.

用处:
禁止标准输出. 1 cat $filename >/dev/null # 文件内容丢失,而不会输出到标准输出.
禁止标准错误. 2>/dev/null 这样错误信息[标准错误]就被丢到太平洋去了.

2、1>/dev/null 2>&1的含义

代表重定向到哪里,例如:echo “123” > /home/123.txt
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr标准错误
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1

那么本文标题的语句:

1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

3、/dev/zero文件代表一个永远输出 0的设备文件,使用它作输入可以得到全为空的文件。因此可用来创建新文件和以覆盖的方式清除旧文件。

下面使用dd命令将从zero设备中创建一个10K大小(bs决定每次读写1024字节,count定义读写次数为10次),但内容全为0的文件。
dd if=/dev/zero of=file count=10 bs=1024

shell中可能经常能看到:>/dev/null 2>&1

命令的结果可以通过%>的形式来定义输出

分解这个组合:“>/dev/null 2>&1” 为五部分。

  1. 1:> 代表重定向到哪里,例如:echo “123” > /home/123.txt
  2. 2:/dev/null 代表空设备文件
  3. 3:2> 表示stderr标准错误
  4. 4:& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
  5. 5:1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于 “1>/dev/null”

因此,>/dev/null 2>&1 也可以写成“1> /dev/null 2> &1”

那么本文标题的语句执行过程为:
1>/dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2>&1 :接着,标准错误输出重定向 到 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

最常用的方式有:

command > file 2>file  与command > file 2>&1

它们有什么不同的地方吗?

首先command > file 2>file 的意思是将命令所产生的标准输出信息,和错误的输出信息送到file 中.command > file 2>file 这样的写法,stdout和stderr都直接送到file中, file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file 的管道。
而command >file 2>&1 这条命令就将stdout直接送向file, stderr 继承了FD1管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容。
从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,较多的时候我们会command > file 2>&1 这样的写法。

Shell中的>/dev/null 2>&1 与 2>&1 >/dev/null 与&>/dev/null 的区别

默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入)、标准输出(输出到屏幕)、标准错误(也是输出到屏幕),它们分别对应的文件描述符是0,1,2 。那么我们来看看下面的几种重定向方法的区别:

>/dev/null 2>&1 

实际上,应该等同于这样: 1>/dev/null 2>/dev/null ,默认情况下就是1,标准输出,所以一般都省略。 而&符号,后面接的是必须的文件描述符。不能写成2>1,这样就成了标准错误重定向到文件名为1的文件中了,而不是重定向标准错误到标准输出中。所以这里就是:标准输出重定向到了/dev/null,而标准错误又重定向到了标准输出,所以就成了标准输出和标准错误都重定向到了/dev/null

2>&1 >/dev/null 

咋一看,这个跟上面那个有啥区别呢,不也是标准错误重定向到标准输出,而标准输出重定向到/dev/null么? 最后不应该都重定向/dev/null么?

事实上, 命令行的重定向什么的, 是在执行命令之前就准备好了的. 解释顺序从左至右依次进行, 2&>1 ,而1是屏幕, 所以标准错误重定向到屏幕, 再而 1>/dev/null , 即标准输出重定向到 /dev/null, 上述2>&1 >/dev/null 并不是什么同一时刻要么产生标准输出要么产生标准错误. 而是两个不同的东西,所以最终结果将是:标准错误打印到屏幕,而标准输出不打印到屏幕。

以以下变量的方式做个解释,就很明显了,这两种方式是不同的,前者就像:

  1. a=1
  2. b=a

而后者就像:

  1. b=a
  2. a=1
  3. &>/dev/null

// 这个就是,不管你是啥玩意儿文件描述符,通通重定向到/dev/null

 

 

 

 

(0)

相关推荐

  • 解析 nohup java -jar xxx &

    一直就知道 java -jar xx ctrl+c就退出了 来自这个文 https://blog.csdn.net/wngpenghao/article/details/83022185 java - ...

  • java后台启动jar包

    当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 java -jar shareniu.jar 当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行. java -j ...

  • LINUX命令后面常见的>/dev/null 解释

    Linux中的标准输入输出 0 是标准输入,一般是从键盘获得输入 1 是标准输出,一般是输出到屏幕了 2 是标准错误,有时候屏幕上可以看到,但是重定向的文件中看不到的就是它了 >为重定向符号 & ...

  • Shell 输入/输出重定向

    大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端.一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端.同样,一个命令通常将其输出写入到标准输出,默认情 ...

  • linux I/O重定向及管道

    一,I/O重定向 重定向正常输出 > :覆盖以存在文件的内容,很危险的操作 >>:如果文件已经存在,则是在原内容的最后追加. 可以禁止>的覆盖行为,使用set -C.只在当前会 ...

  • 转载:Linux下抓包命令tcpdump详解

    2020-02-04 来源:Linux公社  作者:醉落红尘 tcpdump是一个命令行实用程序,可用于捕获和检查进出系统的网络流量. 它是网络管理员中用于排除网络问题和安全测试的最常用工具. 尽管名 ...

  • 使用指定jdk版本运行jar包

    使用指定jdk版本运行jar包

  • springboot 运行 jar 包读取外部配置文件

    案例:本文主要描述linux系统执行jar包读取jar包同级目录的外部配置文件 方法一:相对路径设置配置文件 (1)在jar包同级目录创建配置文件conf.properties并写入配置数据: con ...

  • 推荐:Linux启动Java程序jar包Shell脚本

    每次启动Java程序jar包的时候,难道你还在手敲java -jar xxserver.jar--?边敲边想着都需要追加哪些参数? 今天就推荐给大家一个几乎通用的Shell脚本,它支持Java程序Ja ...

  • 用命令将本地jar包导入到本地maven仓库

    [前情提要]在日常开发过程中,我们总是不可避免的需要依赖某些不在中央仓库,同时也不在本地仓库中的jar包,这是我们就需要使用命令行将需要导入本地仓库中的jar包导入本地仓库,使得项目依赖本地仓库中的代 ...

  • Java:Java的jar包之POI的简介、安装、使用方法(基于POI将Word、Excel、PPT转换为html)之详细攻略

    Java:Java的jar包之POI的简介.安装.使用方法(基于POI的转换-Word.Excel.Ppt等转html)之详细攻略 POI的简介 Apache POI是Apache软件基金会的开放源码 ...

  • nslookup命令参数选项有哪些?Linux运维核心命令学习

    nslookup命令是常用的域名解析查询工具.nslookup域名查询工具是Linux运维工作人员常用命令之一.近几年学习Linux技能的人们越来越多,Linux命令成了很多人必备学习技能.那么Lin ...

  • 对于Linux系统统计的命令有哪些?Linux运维

    Linux命令是对Linux系统进行管理的命令.对于Linux系统来说,无论是中央处理器.内存.磁盘驱动器.键盘.鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心.那么对于Linu ...