Unix/Linux下一般比如想让某个JAVA程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。
比如 nohup ./run.sh &就表示让当前目录下的JAVA程序在后台一直运行,与此同时,该命令会将控制台的日志输出到当前文件夹下的nohup.out文件中。
在一般情况下,程序员调试的时候需要查看控制台输出信息。但是在真正服务运行以后应该转而关注LOG的输出而不是CONSOLE的信息。
但是在某些服务器程序下CONSOLE信息输出过多就会导致nohup.out文件急剧增长。甚至威胁服务器可用磁盘空间。那么对于nohup.out的控制就有价值了。
值得关注的是:nohup.out文件在被使用的情况下删除是无效的。比如你的服务器程序一直在运行,这时去删除nohup.out文件,如果用查看硬盘剩余空间(df)的命令,可以发现并没有释放空间,但是查看已用空间(du)却会发现已用空间已经减少了,也就是说有一部分磁盘“消失”了;这种状况会一直持续到关闭服务器程序为止(应该是由于LINUX对于被占用的文件没有进行写锁并禁止删除造成的)。因此要删除nohup.out文件的最好方法是先关闭跟它相关的程序,然后再删除。
要把nohup.out对系统的影响降低,最简单的方法让nohup执行后不产生日志文件,可以在nohup命令行中增加输出目标文件,并指向/dev/null。也就是 nohup ./run.sh >/dev/null &,这样可以保证nohup.out文件不会自动生成;另外也可以编辑./run.sh文件,使该运行脚本简单化。比如nohup java com.xxx.xxx.Main >/dev/null &。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/brucefreetk/archive/2010/01/27/5260836.aspx