我做了以下事情:
nohup find / &
rm nohup.out
奇怪的是,nohup -command继续运行。我等待创建一个新文件。令我惊讶的是,没有这样的文件。命令的标准出在哪里?
在UNIX中删除文件有两个作用:
你的nohupped进程很乐意继续写入曾经被称为nohup.out的文件,但现在只知道该进程中的文件描述符。
你甚至可以让另一个进程创建一个nohup.out,它不会干扰第一个进程。
当所有硬链接都消失,并且所有进程都关闭它后,磁盘空间将被恢复。
这是Unix上的标准行为。
删除文件后,文件系统中的最后一个链接被删除,但文件仍处于打开状态,因此find
(在本例中)的输出被写入内核缓冲池中的磁盘块,甚至可能写入磁盘。但文件没有名字。当find
退出时,没有进程或文件(inode)引用该文件,因此空间被释放。这是创建程序退出时将消失的临时文件的一种方法 - 打开文件然后将其删除。 (这假设您不需要文件的名称;显然,如果您需要临时名称,此技术将无效。)
如果你将删除nohup.out
文件,句柄将丢失,它将只写入文件描述符,但如果你想清理nohup.out
文件然后运行这个
true > nohup.out
它将删除文件的内容,但不删除文件。
cat /dev/null > nohup.out
来自here