springboot项⽬不输出nohup.out⽇志的解决springboot不输出nohup.out⽇志
nohup java -jar mgcr_pc-0.0.1-SNAPSHOT.war >/dev/null 2>log &
spring out 是什么意思
注意:这个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地址,因此可以清空原本的内容,并且不会再创建⽂件空洞。
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。