nohup 不输出nohup.out文件
时间: 2023-07-20 15:33:57 浏览: 1060
nohup 命令会将命令的标准输出和标准错误输出重定向到 nohup.out 文件中,如果 nohup.out 文件不存在,则会自动创建。如果你使用 nohup 命令后没有看到 nohup.out 文件,可能有以下几种情况:
1. 命令没有产生任何输出
如果你运行的命令没有输出任何内容,那么 nohup.out 文件将为空。你可以尝试运行一个输出一些内容的命令,例如:
```
nohup echo "Hello, world!" &
```
这个命令会输出 "Hello, world!" 到 nohup.out 文件中。
2. 没有写入权限
如果当前目录或者 nohup.out 文件所在的目录没有写入权限,那么 nohup 命令就无法创建或写入文件。你可以尝试在一个有写入权限的目录下运行 nohup 命令,或者给 nohup.out 文件所在的目录添加写入权限:
```
chmod +w /path/to/nohup.out/directory
```
3. 使用了重定向符号
如果你在命令中使用了重定向符号 ">" 或者 "2>", 那么 nohup 命令会将输出重定向到指定的文件中,而不是 nohup.out 文件。你可以检查一下命令中是否使用了重定向符号,或者尝试不使用重定向符号运行命令。
希望以上解答能够帮到你。
相关问题
nohup 启动jar 不要nohup.out文件
### 如何使用 `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]。
nohup java -jar eip.jar > ./nohup.out 2>&1 &
### 如何通过 `nohup` 命令后台运行 Java 程序并重定向日志
#### 背景说明
`nohup` 是一种用于在 Linux 和 Unix 系统中让程序忽略挂起信号(SIGHUP)的工具。当用户退出终端时,通常会导致正在运行的任务被中断,而使用 `nohup` 可以防止这种情况发生。此外,可以通过重定向操作符将程序的标准输出和标准错误输出保存到特定的日志文件中。
#### 实现方法
以下是几种常见的实现方式:
1. **默认情况下,输出会被重定向到 `nohup.out` 文件**
如果不指定任何重定向选项,默认情况下,`nohup` 的所有输出都会被写入名为 `nohup.out` 的文件中[^1]。例如:
```bash
nohup java -jar your_program.jar &
```
2. **将输出重定向到自定义日志文件**
若要将输出保存到其他位置而不是默认的 `nohup.out` 文件,则可以使用 `>` 或者 `>>` 来指定目标文件名。单个大于号 (`>`) 表示覆盖模式;双大于号 (`>>`) 则表示追加模式。例如:
```bash
nohup java -jar your_program.jar > Log.log &
```
上述命令会将标准输出重定向至 `Log.log` 文件,并且如果文件已存在则会清空其内容后再写入新数据。
3. **完全禁用输出记录**
若不需要保留任何形式的日志信息,可利用 `/dev/null` 设备节点丢弃所有的输出内容。这适用于那些无需关注执行过程中的打印消息的情况。具体做法如下所示:
```bash
nohup java -jar your_program.jar > /dev/null 2>&1 &
```
此处不仅正常流(`stdout`)指向了黑洞设备(`/dev/null`),而且还将异常流(`stderr`)也合并到了同一地方,从而实现了彻底屏蔽一切形式的信息反馈的目的[^2].
4. **按照日期动态创建日志文件**
对于长期运行的服务而言,可能更倾向于依据时间戳来区分不同时间段产生的日志条目。下面给出了一种基于月份分类存储每日独立日志的方法论实例演示代码片段:
```bash
nohup java -jar your_jar_file.jar > /path/to/logs/$(date +"%Y-%m")/output_$(date +"%Y-%m-%d").log 2>&1 &
```
在这条语句里头,我们借助 shell 内置函数 date 获取当前系统的年月(%Y-%m)以及完整的日期(%Y-%m-%d),进而构建出了一个分层结构化的路径布局方案以便更好地管理和检索历史档案资料[^4]。
#### 总结
以上介绍了四种不同的策略用来处理由 `nohup` 执行后的 Java 应用所产生的各类输出行为控制技巧。开发者可以根据实际需求灵活选用最适合自己的那套机制来进行相应的配置调整工作。
阅读全文
相关推荐













