当前位置: 首页 > article >正文

Linux后台运行jar包,nohup、>、

  • nohup:no hung up 的缩写,意思是不挂断,主要作用就是可以在后台运行,并可以选择将日志输出到指定文件。在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前工作目录下,如果当前工作目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
  • >:重定向
  • & :在后台运行

文件描述符(File Descriptor),用一个数字(通常为0-9)来表示一个文件。

文件描述符名称常用缩写说明
0标准输入stdin键盘,用户键盘输入的内容
1标准输出stdout屏幕,输出到显示屏的内容
2标准错误stderr屏幕,输出到显示屏的内容

>表示将命令的【标准输出】重定向到指定的文件中

1>表示将命令的【标准输出】重定向到指定的文件中

2>表示将命令的【标准错误】重定向到指定的文件中

2>&1表示将命令的【标准错误】重定向到【标准输出】中

>、>>、1>、1>> 都是表示【标准输出】

--------------------------------------------------------------------------------------------------------------------------------

命令实例:

进入工作目录 /export/server/jar,查看目录内容

cd /export/server/jar
ls

运行命令1: 

nohup java -jar test.jar &

在后台不挂断运行 jar 包,默认在当前工作目录输出默认的日志文件 nohup.out

--------------------------------------------------------------------------------------------------------------------------------

运行命令2:

nohup java -jar test.jar > output.log &

在后台不挂断运行 jar 包,默认在当前工作目录输出指定的日志文件 output.log

--------------------------------------------------------------------------------------------------------------------------------

运行命令3:

nohup java -jar test.jar 2> error.log &

在后台不挂断运行 jar 包,默认在当前工作目录输出标准错误(报错内容)到指定的日志文件error.log

--------------------------------------------------------------------------------------------------------------------------------

运行命令4:

nohup java -jar test.jar 1> test.log 2> test-error.log &

在后台不挂断运行 jar 包,在当前工作目录,将标准日志输出到指定的日志文件 test.log,将错误日志输出到指定的日志文件 test-error.log

--------------------------------------------------------------------------------------------------------------------------------

运行命令5:

nohup java -jar test.jar 1> testall.log 2>&1 &

等同于

nohup java -jar test.jar > testall.log 2>&1 &

在后台不挂断运行 jar 包,在当前工作目录,将标准日志输出到指定的日志文件 testall.log,将错误日志输出到指定的日志文件 testall.log,2>&1表示将命令的【标准错误】重定向到【标准输出】中。

--------------------------------------------------------------------------------------------------------------------------------

运行命令6:使用绝对路径,可以在任意工作目录去执行

nohup java -jar /export/server/jar/test.jar > /export/server/jar/testlog.log 2>&1 &

在后台不挂断运行 /export/server/jar/test.jar 包,在 /export/server/jar 目录,将标准日志和错误日志都输出到指定的日志文件 testlog.log,2>&1表示将命令的【标准错误】重定向到【标准输出】中。

--------------------------------------------------------------------------------------------------------------------------------

运行命令7:不输出标准输出日志

nohup java -jar /export/server/jar/test.jar > /dev/null &

在后台不挂断运行 /export/server/jar/test.jar 包,不输出标准输出日志。/dev/null 表示空设备文件。

--------------------------------------------------------------------------------------------------------------------------------

运行命令8:不输出任何日志

nohup java -jar /export/server/jar/test.jar > /dev/null 2>&1 &

在后台不挂断运行 /export/server/jar/test.jar 包,不输出任何日志。/dev/null 表示空设备文件。这里也可以理解为将标准输出日志和标准错误日志都输出到空设备文件,即是不输出日志。

--------------------------------------------------------------------------------------------------------------------------------

运行命令9:只输出标准错误(报错内容) 

nohup java -jar /export/server/jar/test.jar > /dev/null 2> testonlyerr.log &

在后台不挂断运行 /export/server/jar/test.jar 包,只输出标准错误(报错内容)日志。/dev/null 表示空设备文件。这里 > /dev/null 意思是将标准输出到空设备文件,即是不输出标准输出。

--------------------------------------------------------------------------------------------------------------------------------

摸索 >、1>、1 >、2>&1、2>& 1、2 >&1 的区别

命令执行输出记录:

[root@localhost jar]# java -jar test.jar > testall.log 2>&1 &
[1] 37689
[root@localhost jar]# ps -ef | grep jar
root      37689 110663 29 21:06 pts/0    00:00:24 java -jar test.jar
root      39255 110663  0 21:07 pts/0    00:00:00 grep --color=auto jar
[root@localhost jar]# 
[root@localhost jar]# java -jar test.jar > testall.log 2>& 1 &
[1] 41011
[root@localhost jar]# ps -ef | grep jar
root      41011 110663 37 21:09 pts/0    00:00:26 java -jar test.jar
root      42346 110663  0 21:10 pts/0    00:00:00 grep --color=auto jar
[root@localhost jar]#
[root@localhost jar]# java -jar test.jar 1> testall.log 2>&1 &
[1] 14097
[root@localhost jar]# ps -ef | grep jar
root      14097 110663 46 20:46 pts/0    00:00:24 java -jar test.jar
root      15080 110663  0 20:47 pts/0    00:00:00 grep --color=auto jar
[root@localhost jar]# 
[root@localhost jar]# java -jar test.jar 1> testall.log 2>& 1 &
[1] 18053
[root@localhost jar]# ps -ef | grep jar
root      18053 110663 33 20:49 pts/0    00:00:23 java -jar test.jar
root      19388 110663  0 20:50 pts/0    00:00:00 grep --color=auto jar
[root@localhost jar]#
[root@localhost jar]# java -jar test.jar 1> testall.log 2 >& 1 &
[1] 21253
[root@localhost jar]# ps -ef | grep jar
root      21253 110663 56 20:52 pts/0    00:00:26 java -jar test.jar 2
root      22087 110663  0 20:53 pts/0    00:00:00 grep --color=auto jar
[root@localhost jar]#
[root@localhost jar]# java -jar test.jar 1 > testall.log 2 >& 1 &
[1] 24094
[root@localhost jar]# ps -ef | grep jar
root      24094 110663 36 20:54 pts/0    00:00:26 java -jar test.jar 1 2
root      25468 110663  0 20:56 pts/0    00:00:00 grep --color=auto jar
[root@localhost jar]#
[root@localhost jar]# java -jar test.jar 1 > testall.log 2>&1 &
[1] 33853
[root@localhost jar]# ps -ef | grep jar
root      33853 110663 52 21:03 pts/0    00:00:25 java -jar test.jar 1
root      34736 110663  0 21:03 pts/0    00:00:00 grep --color=auto jar
[root@localhost jar]#

推断:

1、> 等同 1>,意思是将【标准输出】重定向到指定的文件中,不等同 1 >(中间有空格)

2、2>&1表示将命令的【标准错误】重定向到【标准输出】中,其中 > 的左右不能有空格,1前面可以有空格,也就是 2>&1,也可以写成 2>& 1,平常都是写成一个整体 2>&1

以下这四条命令执行效果相同

java -jar test.jar > testall.log 2>&1 &
java -jar test.jar > testall.log 2>& 1 &
java -jar test.jar 1> testall.log 2>&1 &
java -jar test.jar 1> testall.log 2>& 1 &

--------------------------------------------------------------------------------------------------------------------------------

清空进程/服务日志

【千万别直接删除日志文件!!!】

【会造成服务无法输出日志,服务异常直接停止运行!!!】

【造成严重生产事故!!!】

在进程/服务不停止的情况下,日志会一直增长,日志文件会越来越大,怎么办呢?

第一种方法:

清空之前,检查日志大小

cat /dev/null > 日志文件路径

第二种方法:

清空之前,检查日志大小

cp /dev/null 日志文件路径


http://www.kler.cn/a/391544.html

相关文章:

  • 使用葡萄城+vue实现Excel
  • mapbox进阶,添加绘图控件
  • 【某大型互联网企业】软件测试面试经验分享(1 ~ 3年)
  • 大数据技术Kafka详解 ⑤ | Kafka中的CAP机制
  • Docker安装和卸载(centos)
  • Linux创建server服务器实现多方信息收发
  • 源码解析-Spring Eureka
  • Qt 获取当前系统中连接的所有USB设备的信息 lsusb版
  • Spring Boot编程训练系统:架构设计与技术选型
  • creo toolkit二次开发学习之获取任意选择模型作为元件,并进行获取约束等
  • 6.2 对角化矩阵(1)
  • 【机器学习导引】ch6-支持向量机
  • RabbitMQ队列详细属性(重要)
  • 【MATLAB源码-第215期】基于matlab的8PSK调制CMA均衡和RLS-CMA均衡对比仿真,对比星座图和ISI。
  • Django前后端分离基本流程
  • 计算机网络:运输层 —— 运输层端口号
  • 解决全局安装@vue/cli 后vue -V不是内部或外部命令
  • JVM(二、类加载系统)
  • 20. 类模板
  • SpringBoot Tomcat 请求处理全流程详解
  • 汇川PLC EtherNET/IP无线通信,开启国产工控无线互联新时代
  • SASS 控制指令详解@for、@if、@each、@while
  • 面试问答:TCP协议中的三开四断,三次握手四次挥手
  • 关于CSS表达使中使用的 max() 函数
  • sqlite3数据库的相关API使用
  • 二叉树的前序遍历---一个简单高效的算法