exec tee 重定向文件将创建 bash 进程

exec tee 重定向文件将创建 bash 进程

脚本如下:

exec &> >(tee -a ./test_tee.log)
ping $1

当脚本在bash 7603中运行时,exec行将创建一个名为13069的进程。如下所示:

root     13068  7603  0 17:15 pts/5    00:00:00 bash
root     13069 13068  0 17:15 pts/5    00:00:00 bash // where does it come from
root     13070 13068  0 17:15 pts/5    00:00:00 ping google.com
root     13071 13069  0 17:15 pts/5    00:00:00 tee -a ./test_tee.log

我在pid 7603 bash中运行该脚本,pid 13068是脚本,为什么会有pid 13069

答案1

附加进程是一个正在执行的子 shell tee -a ./test_tee.log。使用 确认这一点pstree -p | grep -B 1 '[t]ee'

你可以告诉这个子shell代替将其本身替换为tee。将相关行更改为:

exec &> >(exec tee -a ./test_tee.log)

相关内容