命令行启动jar包,Linux启动jar
通常,当我们启动SpringBoot项目的jar包时,我们使用下面的命令
nopjava-jarxxxx.jarlog.log21的整个命令都由linux中的bash解释和执行。一般来说,我们在执行一些应用程序时会使用nohup命令,比如:
nohup python 3 XXX . py nohup Java-jar XXX . jar1.nohup
目的:在不挂断的情况下运行命令。
语法:nohup命令[Arg …] []
无论nohup命令的输出是否被重定向到终端,输出都将被附加到当前目录中的nohup.out文件。
如果当前目录的nohup.out文件不可写,则输出被重定向到$HOME/nohup.out文件。
如果无法创建或打开文件进行追加,则无法调用Command参数指定的命令。
退出状态:该命令返回以下退出值:
26可以找到但不能调用Command参数指定的命令。
27 nohup命令有错误,或者找不到由命令参数指定的命令。
否则,nohup命令的退出状态是由Command参数指定的命令的退出状态。
2.
目的:在后台运行
再看看。
Java -jar xxx.jar如果我们使用上面的命令直接启动jar包,程序中的启动信息和输入输出信息会直接打印在屏幕上,如下
而直接用Ctrl+C会停止程序的运行。
与nohup结合使用
nopjava-jarxxx.jar将最初直接打印在屏幕上的内容重定向到nohup.out文件
3.重定向
在linux系统中,一切都是文件,也就是说,java -jar也是文件。如果是文件,会有一个文件描述符FD。在liunx中,每个文件都有三个固定的文件描述符0,1,2。
0在Java中可以理解为System.in1在Java中可以理解为System.out2可以假设为System.error,即错误产生后的输出流,如图。
注意图中FD下面的0u 1u 2u分别指的是我们刚刚描述的三类描述符,后面的字母代表当前流的状态。u r w有三种,u代表双向读写,r代表读,w代表写。
1.log2log.log21在上面的代码中,代表输入方向和输出方向的两个命令符号的左边都是要重定向的类型,中间没有空格,右边是定位的终点。特别的是21把错误输出流重定向到out输出流,在它前面加了1。您可以在虚拟机中进行以下测试(都是基本的linux命令)
4.完整解读
总之,让我们看看整个启动命令。
nop java -jar xxxx . jarlog.log 21 nohup启动xxx.jar作为后台操作,将Java-jar生成的输出重定向到log . log文件。
注意:log.log只重定向正常的输出流,我们必须将有错误的输出流2重定向到正常的输出流1。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。