使用nohup进入后台,nohup.out内信息显示不及时

本文介绍了解决nohup后台运行程序时输出信息显示延迟的问题。通过使用fflush(stdout)、setbuf(stdout,NULL)关闭缓冲或将输出重定向到stderr等方法可以有效改善这一状况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用nohup进入后台,nohup.out内信息显示不及时


代码中使用printf打印的信息显示慢


因为标准输出stdout进入后台,启用了缓冲


可以在printf后使用fflush(stdout)


或者使用setbuf(stdout, NULL)关闭缓冲


或者使用fprintf将打印输出到stderr

### 如何使用 `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]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值