nohup命令jar包启动, nohup.out 文件越来越大问题解决

java 后台启动

一些知识点:

1、三个文件描述符

Linux 下均有 0,1,2 三个文件描述符,分别表示标准转入,标准输出,错误输出

可以这样使用,比如:

ll *.jar 1>jars.log—— 这样标准输出会写到 jars.log 文件上
ll *.jar >jars.log 和 ll *.jar 1>jars.log 写法效果一样。

但是 ll *.jar 2>jars.log 这个意思是把错误输出写到 jars.log 文件,但标准输出还是会输出到命令容器。

2、 重定向

2>&1:将错误信息重定向到标准输出

3、特殊文件 /dev/null

Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。

如果不想要某类型的输出,就把它的输出写到无底洞 /dev/null
比如标准输出和错误输出都忽略掉,就可以这样写:
ls *.jar 1>/dev/null 2>/dev/null

结合重写向,可以这样玩

ls *.jar >/dev/null 2>&1 (这个写法和:ls *.jar 1>/dev/null 2>/dev/null 是一个意思,但更加简洁)

注意:此处的顺序不能更改,否则达不到想要的效果,此时先将标准输出重定向到 /dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,于是一切静悄悄:-)

如果进行后台启动服务

如果使用 java -jar xx.jar 这样是前端阻塞的,一旦ctrl + c 就会停止掉
如果使用 java -jar xx.jar & 这样是可以达到目的,但不够
nohup java -jar xx.jar & 嗯,这样会更好一些,

但nohup 会把输出自动写入 nohup.out 文件中,并且随着时间,nohup.out 文件会越来越大,这显然不是我们想看到的效果。咋办呢,这个时候,/dev/null 就可以登场了。

nohup java -jar xx.jar >/dev/null 2>&1 & (这样标准输出,错误输出都会被吞掉,静悄悄。当然,日志要根据log4j 等日志框架工具等输出到指定的文件目录,更容易管理)

如果想保留一些错误日志什么的,可以:
nohup java -jar xx.jar >/dev/null 2>error.log &

### 如何使用 `nohup` 启动 JAR 文件但不创建 `nohup.out` 日志文件 当使用 `nohup` 命令启动应用程序时,默认情况下会将标准输出和标准错误重定向到名为 `nohup.out` 的文件中。如果希望避免创建此默认日志文件,则可以通过显式地重定向输出来实现。 #### 方法一:将输出重定向至 `/dev/null` 通过将标准输出 (`stdout`) 和标准错误 (`stderr`) 重定向到 `/dev/null`,可以防止任何输出被记录下来: ```bash nohup java -jar your-application.jar > /dev/null 2>&1 & ``` 这条命令的作用如下: - `2>&1` 表示将标准错误也重定向到与标准输出相同的位置,即 `/dev/null` - `&` 让程序在后台运行[^1] 这种方法适用于不需要保存任何日志的情况,所有输出都将被丢弃。 #### 方法二:仅捕获错误信息或将日志写入特定位置 如果不希望完全忽略所有的日志信息而是有选择性的处理,比如只保留错误信息或指定其他路径存储日志,那么可以根据需求调整重定向策略: ##### 只记录错误信息 ```bash nohup java -jar your-application.jar >/dev/null 2>error.log & ``` 这里只有标准错误会被重定向到 `error.log` 文件中,而正常的标准输出则被抛弃。 ##### 自定义日志文件 也可以像下面这样把两个流分别指向不同的地方: ```bash nohup java -jar your-application.jar >> custom_output.log 2>>custom_error.log & ``` 这种方式允许更灵活地管理不同类型的日志数据[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dengrz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值