- 论坛徽章:
- 84
|
本帖最后由 yjh777 于 2015-09-18 19:14 编辑
看了一下,程序运行期间有三个进程:
22600 pts/1 S+ 0:00 | | \_ bash kkk.sh
22601 pts/1 S+ 0:00 | | \_ bash kkk.sh
22603 pts/1 S+ 0:00 | | | \_ tee log_file.txt
然后查看每个进程的 stdin stdout 信息:
while :; do ps aux|grep -v grep| egrep tee || break; echo ------; sudo ls -l /proc/$(pgrep -f bash\ kkk.sh|head -n1)/fd; ls -l /proc/$(pgrep -f bash\ kkk.sh|tail -n1)/fd; ls -l /proc/$(pidof tee)/fd; done
------
总用量 0
lrwx------. 1 yjh yjh 64 9月 18 17:27 0 -> /dev/pts/1
l-wx------. 1 yjh yjh 64 9月 18 17:27 1 -> pipe:[1443883]
l-wx------. 1 yjh yjh 64 9月 18 17:27 2 -> pipe:[1443883]
lr-x------. 1 yjh yjh 64 9月 18 17:27 255 -> /home/yjh/kkk.sh
总用量 0
lr-x------. 1 yjh yjh 64 9月 18 17:27 0 -> pipe:[1443883]
lrwx------. 1 yjh yjh 64 9月 18 17:27 1 -> /dev/pts/1
lrwx------. 1 yjh yjh 64 9月 18 17:27 2 -> /dev/pts/1
总用量 0
lr-x------. 1 yjh yjh 64 9月 18 17:27 0 -> pipe:[1443883]
lrwx------. 1 yjh yjh 64 9月 18 17:27 1 -> /dev/pts/1
lrwx------. 1 yjh yjh 64 9月 18 17:27 2 -> /dev/pts/1
l-wx------. 1 yjh yjh 64 9月 18 17:27 3 -> /home/yjh/log_file.txt
从每个进程的fd信息来看,并没有死循环,那么是什么原因呢?
是不是 tee 的父进程的stdin使用了同一个管道信息,导致tee读取stdin后 数据仍然保留? 我再想想,,,
-------------------
此处方向错误,其实是最后的 cat log_file 导致了死循环,详见8楼 |
|