脚本如下:
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)