1、以nohup命令启动一个jar包为例,如图是一个简单的shell启动脚本,其中nohup启动命令为:nohup java -jar XXXXX.jar >logs/console.l泠贾高框og 2>&1 & ,此处以nohup命名启动jar包,并且让输出重定向都logs/nohup.out文件中
2、经过一段时间用产生日志后,通过trancate命令(很多命令可以清空,这里不做赘述)清空日志文件,可以发现此时文件所占空间为零;但是再重新写入文件时,发现文件空间并没有被释放,如果用Notepad打开文件,会发现文件顶端有大量的null
3、可以发现,这种现象是典型的磁盘空间未释放的缘故;内容清空,但实际上写入的位置并没有重置到文件起始位置,为覆盖写;因此重新写入时前面都以null值占位,因此可以认为是以nohup启动,重定向到console.log文件时出的问题;
4、重新看启动命令:nohup java -jar XXXXX.门钙蹲茌jar >logs/console.log 2>稆糨孝汶;&1 & ,重定向写入到console.log文件,用了一个">"符号,在linux系统中,尖括号代表的是数据转移的作用,">"表示覆盖写,">>"表示追加写,因此,此处应该使用两个尖括号,表示追加写入,这样在清空文件时,写入位置置零,追加写入则从起始位置开始写入。