这就是我想要实现的目标:
- 在后台运行命令/进程,并将其输出重定向到以后台进程的进程 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" &
应该工作。