一个被删除的文件会发生什么事仍然受到Linux上的redirect?

如果在Linux中删除诸如nohup.out之类的日志文件,而它仍然是正在运行的作业(和进一步的input)的主题,那么数据会发生什么变化?

例如

script.sh

#!/bin/bash while [ 1 ] do fortune done 

然后…

 # nohup ./script.sh & 

这会默认输出日志到nohup.out。

甚至

 # ./script.sh > nohup.out & 

问题是; 如果nohup.out被删除会发生什么? 假定这个工作继续下去,文件真的没有了吗? 如果script.sh生成足够的数据来填充磁盘,会发生什么情况? 这是否创build了一个事实上的redirect到/ dev / null的状态?

通过后台的方式,我发现以前在这个方法中启动的一个进程不能在延长的时间内重新启动,但是在这个维护时间之前,我估计磁盘将会被填满。 将来会避免这种情况,我只是好奇,一个未链接的文件会发生什么情况,这个文件仍然会被redirect。

如果程序仍然有文件句柄打开,我相信会发生的是文件继续存在。 它从你的目录列表中消失,看起来消失了,但直到最后一个文件句柄closures,文件继续增长。

这就是为什么人们在文件系统上会有大量的文件,并且出现错误,find一个很大的错误文件,删除它,仍然有很大的磁盘空间列表,但是不能再find这个文件。 在那。 只是不太明显。 使用lsof来查找持有文件句柄的应用程序并closures应用程序,然后回收空间。