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