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

news/2024/11/14 12:14:20/
  • 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.ppmy.cn/news/1546607.html

相关文章

高级java每日一道面试题-2024年11月01日-Redis篇-Redis支持的数据类型有哪些?

如果有遗漏,评论区告诉我进行补充 面试官: Redis支持的数据类型有哪些? 我回答: 在 Java 高级面试中,Redis 的数据类型是一个常见的考点。Redis 是一个高性能的键值存储系统,支持多种数据类型,每种数据类型都有其特定的用途和操作方法。以…

el-date-picker picker-options属性中disabledDate设置时间的禁用和启用,并且支持到时分秒的禁用和启用

默认picker-options 是配置的对象,如果代码中只存在一个开始时间或者一个结束时间,可以直接设置成对象进行配置我这里的应用场景是在表格中存在多个时间的配置项 使用到了dayjs作为时间判断,也可以自行根据js来实现判断需要将picker-options …

2024.11.7- Redis的主从复制集群

7.1 Redis的主从复制 7.1.1 简介 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。 ​ 默认情况下&#…

kafka常见面试题总结

Kafka 核心知识解析 一、Kafka 消息发送流程 Kafka 发送消息涉及两个线程:main 线程和 sender 线程。在 main 线程中,会创建一个双端队列 RecordAccumulator,main 线程负责将消息发送给 RecordAccumulator,而 sender 线程则从 R…

【HAProxy05】企业级反向代理HAProxy调度算法之静态算法与动态算法

HAProxy 调度算法 HAProxy通过固定参数 balance 指明对后端服务器的调度算法,该参数可以配置在listen或backend选 项中。 HAProxy的调度算法分为静态和动态调度算法,但是有些算法可以根据不同的参数实现静态和动态算法 相互转换。 官方文档&#xff1…

实现高效数据同步:从金蝶云星空到旺店通

盘亏单对接其他出库单:金蝶云星空到旺店通企业奇门的数据集成方案 在现代企业的运营过程中,数据的高效流动和准确对接是确保业务顺畅运行的关键。本文将分享一个具体的技术案例,展示如何通过轻易云数据集成平台,将金蝶云星空中的…

使用 Python 实现高效网页爬虫——从获取链接到数据保存

前言 在这个时代,网络爬虫已成为数据分析与信息收集不可或缺的技术之一。本文将通过一个具体的Python项目来介绍如何构建一个简单的网络爬虫,它能够自动抓取指定网站的文章链接、标题、正文内容以及图片链接,并将这些信息保存为CSV文件。 目标网站 一、准备工作 在开始编…

1.1 关于游戏编程

1.1.1、游戏中客户端和服务器的交互 游戏通常采用客户端-服务器模式‌。在这种模式下,服务器负责处理游戏的核心逻辑、数据存储和玩家间的交互,而客户端则负责呈现游戏画面、接收玩家输入并与服务器通信‌。 客户端和服务器的作用和功能 ‌客户端‌&a…