场景描述:
用 nohup 启动程序时,会在当前的目录下生成 nohup.log 文件。这样就会在很短的时间内将磁盘全部写满(当时的磁盘是 100G,全部写满),导致别的程序无法正常运行。(如启动:Jenkins 等)
那么如何让 nohup 命令不产生大量的日志文件呢
解决思路
既然 nohup 会输出大量的日志。那如何让 nohup 不输出日志呢?
查了很多的资料发现没办法让 nohup 不输出日志。但是可以 利用 liunx 的黑洞/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影 无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。
/dev/null
/dev/null : 在类 Unix 系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个 EOF。
在程序员行话,尤其是 Unix 系统中,/dev/null 被称为位桶(bit bucket)或者黑洞(black hole)。空设备通常被用于丢弃不需要的输出流,或作为用于输入流的空文件。当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。
操作示例
nohup java -cp WEB-INF/lib/*:WEB-INF/classes org.b3log.solo.Starter >/dev/null 2>&1 &
- >/dev/null 将信息输出到/dev/null
- 2>&1 将错误信息重定向到标准输出
- 最后一个&符号,表示程序在后台运行
关于 Linux 的重定向
- 0:表示标准输入
- 1:标准输出,在一般使用时,默认的是标准输出
- 2:标准错误信息输出
补充
这样问题就得到了解决。
如果大神们有更好解决方案可以在写在评论中
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于