关于nohup启动程序后,nohup.out过大的解决方法
2018-03-21 11:52
288 查看
一般百度到都会说:
cp /dev/null nohup.outcat /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地址,因此可以清空原本的内容,并且不会再创建文件空洞。
cp /dev/null nohup.outcat /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地址,因此可以清空原本的内容,并且不会再创建文件空洞。
相关文章推荐
- 关于VS2013提示无法启动程序,找不到指定文件的解决方法
- Golang Linux下面调用nohup启动程序无法返回问题,解决方法.
- 解决关于图片过大而造成OutOfMemoryError方法
- linux nohup.out文件过大解决方法
- 关于IIS服务启动失败的问题:“IIS提示‘另一个程序正在使用此文件,进程无法访问’”,的解决方法
- 关于本程序无法运行的解决方法
- VS 2003使用第三方程序启动不能Debug的解决方法
- 关于bcp out 于bcp in出错的一般原因和解决方法
- 一次误修改sga_max_size值过大后导致数据库无法启动的解决方法
- oracle 监听程序无法启动解决方法。
- 关于myeclipse启动错误的解决方法 com.genuitec.myeclipse.product.ide could not be found
- 关于双击jar文件启动命令行的解决方法
- 关于SqlServer服务无法启动的症状分析和解决方法
- C# B/S程序中使用DropDownList出现System.ArgumentOutOfRangeException: “DropDownList1”有一个无效 SelectedValue,因为它不在项目列表中的解决方法
- 关于在Eclipse中启动Weblogic服务器时出现Parsing Failure in config.xml问题解决方法
- 关于SQL安装时出现的有程序安装挂起问题的解决方法
- 关于apache2不能启动的问题的解决方法
- 关于“以前的某个程序安装已在安装计算机上创建挂起的文件操作”解决方法
- 关于Asp程序的Server.CreateObject错误解决方法
- 关于 Asp 程序的 Server.CreateObject 错误解决方法