如何在不重新启动命令的情况下切换到正在运行的进程输出重定向到的新文件



我有一个不想重新启动的后台进程。它的输出正在被主动记录到一个文件中。

nohup mycommand 1> myoutputfile.log 2>&1 &

我想"归档"进程当前正在将其输出写入的文件,并使其开始写入相同文件名的空白文件我必须能够做到这一点,而不必终止流程并重新启动

我试着简单地将现有文件重命名(为myoutputfile_.log),希望shell现在发现该文件已不存在,将使用原始文件名(myoutputfile.log)创建一个新文件。但这并不起作用,因为shell保留了对文件位置的引用,并一直附加到它

我看了看。在执行ls时,我看到流现在被标记为(deleted),但我很困惑下一步该怎么做。在gdb命令中,除了进程ID之外,我还必须指定进程可执行文件吗?如果我没有具体说明或者我弄错了,会发生什么?一旦进入gdb,如何强制流在已删除文件的相同位置(相同路径和文件名)重新创建文件?

我如何使用shell中的命令向它发出信号,为现有进程的输出重定向启动一个新文件?

附言:我不能试错,因为我做对了很重要。如果知道它是相关的,这是一个java过程

我通过以下操作解决了这个问题:

cp myoutputfile.log myoutputfile_.log; echo > myoutputfile.log

这实质上是在将原始内容复制到新文件后重置日志文件。

相关内容

  • 没有找到相关文章

最新更新