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



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

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

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

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

process > /tmp/process.log &
mv /tmp/process.log /tmp/$!.log

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

在 bash 中运行 exec 命令会将当前进程(执行 bash 的进程)替换为您正在执行的进程。所以像

bash -c "exec top > ${BASHPID}.temp" &

应该工作。

相关内容

  • 没有找到相关文章

最新更新