在执行期间删除nohup -file

Léo*_* 준영 7 nohup

我做了以下事情:

nohup find / &

rm nohup.out
Run Code Online (Sandbox Code Playgroud)

奇怪的是,nohup -command继续运行.我等待创建一个新文件.令我惊讶的是,没有这样的文件.命令的标准出在哪里?

pax*_*blo 10

在UNIX中删除文件有两个作用:

  • 它删除了它的目录条目.
  • 如果没有进程打开并且没有其他目录条目指向它(硬链接),它会释放空间.

你的nohupped进程很乐意继续写入曾经被称为nohup.out的文件,但现在只知道该进程中的文件描述符.

你甚至可以让另一个进程创建一个nohup.out,它不会干扰第一个进程.

当所有硬链接都消失,并且所有进程都关闭它后,磁盘空间将被恢复.

  • @SimpleQuestions:很少有程序在每次写入时打开文件,特别是在写入标准输出时.他们只是继续使用开放文件描述符.一旦程序开始写入给定文件,它就会继续这样做.您无法通过(重新)移动文件来更改它所写入的文件. (3认同)
  • 将来如果要在进程写入时截断日志文件,请使用以下命令:cat/dev/null> nohup.out (2认同)

Saa*_*adi 7

如果你要删除nohup.out文件,句柄将丢失,它只会写入文件描述符,但如果你想清除nohup.out文件,那么只需运行这个

true > nohup.out
Run Code Online (Sandbox Code Playgroud)

它会删除文件的内容,但不会删除文件。