6

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

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

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

4

2 回答 2

6

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

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

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

于 2012-11-21T11:42:48.470 回答
2

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

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

应该管用。

于 2012-11-21T11:43:02.840 回答