将进程的输出写入文件名中包含进程标识的文件

ego*_*ulz 6 bash pid background-process io-redirection

这就是我想要实现的目标:

  • 在后台运行命令/进程,并将其输出重定向到临时文件,该文件以后台进程的进程ID命名.
  • 例:
    • top&//进程此后台进程的ID为1123
    • top的输出应存储在文件1123.temp中

这可能吗?因为要在后台真正运行它,我们不必在将其标记为后台进程之前进行重定向吗?或者有一些技巧可以解决这个问题吗?

Bri*_*new 6

您可以重定向到临时文件,然后mv将该文件重定向到所需的名称,例如

process > /tmp/process.log &
mv /tmp/process.log /tmp/$!.log
Run Code Online (Sandbox Code Playgroud)

$!是以前的后台程序的pid.请注意,mv只是重命名该文件.它不会中断写入它.