温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

springboot项目中不输出nohup.out日志如何解决

发布时间:2021-07-27 17:51:23 来源:亿速云 阅读:444 作者:Leah 栏目:开发技术

今天就跟大家聊聊有关springboot项目中不输出nohup.out日志如何解决,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

springboot不输出nohup.out日志

nohup java -jar mgcr_pc-0.0.1-SNAPSHOT.war >/dev/null 2>log &

注意:这个log是一个文件,可以随意命名

ps aux|grep 你刚刚运行的包名.jar

然后会显示线程id

关闭进程 如5555

kill -9 5555

nohup启动程序后,nohup.out过大的解决

一般百度到都会说:

cp /dev/null nohup.out
cat /dev/null nohup.out

不能简单的删除那个文件,因为linux的文件管理是引用计数法。

可以清空nohup日志,其实关键在于启动时的流输入方式。如果使用>方式,使用上述方法操作后,再次写入时,文件会重新变成原来的大小,而使用>>追加方式,确实可以消除文件的大小。

原因基本描述如下:

linux的文件管理使用fd,用户可以自定义3以上(包括3)的文件,而0,1,2,则对应了3个标准流

  • 0=标准输入流stdin

  • 1=标准输出流stdout

  • 2=标准错误流stderr

shell读取到>时,判断文件是否存在,不存在则创建文件,之后以w方式写入,文件指针只会向后增加。

因此使用>作为nohup的重定向时,文件指针一直向后增加,使用上述两个命令操作nohup.out,操作时确实重写了整个文件,但是在程序的下次输出时,文件的大小又重新变回原来的大小了,这很正常,因为文件的指针还在原来的大小的位置,写入操作时,指针向后偏移“输出内容的大小”,并写入“输出内容”,此时文件不得不重新回到原本的大小,虽然原本的内容已经不见了(此时那些内容的填充为0,类似的操作一次,然后查看nohup文件的16进制表示,就会发现它们全部都是0x00,可以称为文件空洞)

而使用>>方式写入文件时,使用a+方式写入文件,文件指针指向文件的结束符EOF位置。

在使用使用上述两个命令操作nohup.out时,文件的结束符确实重新回到了0x00地址,因此可以清空原本的内容,并且不会再创建文件空洞。

看完上述内容,你们对springboot项目中不输出nohup.out日志如何解决有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI