如何解决nohup命令启动项目日志文件过大问题

     如何解决nohup命令启动项目日志文件过大问题

问题描述:最近在项目中发现nohup.out的文件大小已经有5G左右了,因为当前项目会生成自己的日志文件所以其实nohup.out这个文件对于我来说其实实没有用的,所以我决定在启动项目的时候让它不生成这个nohup.out文件

实现方法:

       找到其他人的解决方案如下:

思路

由于nohup.out没有什么价值,如果不处理的话,越积越大,占满磁盘空间,导致服务器奔溃,我就查了一些资料,运行nohup 命令时,让其不产生此文件!

解决

命令语法: nohup xxxx >/dev/null 2>&1& 
比如: nohup java -jar xxxx.jar >/dev/null 2>&1&

命令解释:后台运行 xxx.jar 程序,将标准错误输出合并到标准输出,然后标准输出重定向至 垃圾桶 /dev/null

命令详细分析

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

1 :表示stdout标准输出,系统默认值是1,所以”>/dev/null”等同于”1>/dev/null” 
2 :表示stderr标准错误输出 (stdout不包括stderr) 
& :表示等同于的意思,2>&1,表示2的输出重定向等同于1

1 > /dev/null 2>&1 语句含义: 
1 > /dev/null : 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。 
2>&1 :接着,标准错误输出重定向(等同于)标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

最后一个&: 是让该命令在后台执行,就是关闭ssh窗口后,程序还在后台执行不会停掉

 

经实践上述方案是可以解决这个问题的。

 

下面介绍下Linux 下nohup 和 &这连个命令:

       &:
  使进程在后台运行, 默认输出到标准输出(即当前屏幕), 除非重定向输出.
  此时忽略 SIGINT 信号.
   若关闭会话, 则进程会结束
  nohup:
  进程仍旧在前台跑, 默认输出到 nohup.out .
  此时进程忽略 SIGHUP 信号, 关闭会话不影响进程.
   Ctrl+c会使进程中断
  nohup + &:
  进程在后台跑, 忽略 SIGINT, SIGHUP 信号.

你可能感兴趣的:(如何解决nohup命令启动项目日志文件过大问题)