Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash T形三通在管道安装后不退出';s on已经完成了_Bash_Solaris_Pipe_Tee - Fatal编程技术网

Bash T形三通在管道安装后不退出';s on已经完成了

Bash T形三通在管道安装后不退出';s on已经完成了,bash,solaris,pipe,tee,Bash,Solaris,Pipe,Tee,所以,我有一个相当长且涉及的脚本,供那些不想深入研究任何错误的人使用 最近,在测试过程中,脚本莫名其妙地冻结了。长话短说,我在子shell中执行了一个命令,以便能够将stdout和stderr连接到我的日志文件: (/path/to/script -i -ran 2>&1; ) | tee -a /path/to/mylogfile 该脚本不再位于进程树中,不再运行,并且似乎已完全退出,因为它作为最后一个操作写入的文件已存在且未打开。然而,特伊固执地留下来。我杀了tee,剧本就这

所以,我有一个相当长且涉及的脚本,供那些不想深入研究任何错误的人使用

最近,在测试过程中,脚本莫名其妙地冻结了。长话短说,我在子shell中执行了一个命令,以便能够将stdout和stderr连接到我的日志文件:

(/path/to/script -i -ran 2>&1; ) | tee -a /path/to/mylogfile

该脚本不再位于进程树中,不再运行,并且似乎已完全退出,因为它作为最后一个操作写入的文件已存在且未打开。然而,特伊固执地留下来。我杀了tee,剧本就这样欢快地继续着。这是第一次发生这种事,我想知道我能做些什么来防止它再次发生。任何想法都将不胜感激。

首先,不需要旁注“;”。第二,你能重现这个问题吗?我怀疑有些事情并不像您在这里所相信的那样,因为当写入管道的进程退出时,tee确实会退出。如果你能重现这个问题,我们可以调试它。是的,要进行更深入的调试,请使用这个shebang:
#/bin/bash-x
为了弄清楚发生了什么,我唯一经历过这种情况的时候是“/path/to/mylogfile”是一个命名管道(通常使用mkfifo或mknod-p生成)如果它是一个命名管道,tee将一直坐在那里,直到记录器处理它。尝试
file/path/to/mylogfile
查看(这在日志记录中非常常见,以便守护进程可以处理任何错误等)。我将尝试检查该文件(尽管它应该是一个文件,因为tee是唯一创建和附加到它的东西)。此外,我将检查lsof,以查看馈入tee的管道是否仍然打开,然后查看是否还有其他东西打开了该管道或tee正在写入的文件。您的陈述中似乎存在矛盾:“脚本已不在进程树中,……我杀了tee,脚本继续愉快地运行。”如果您杀了tee,并注意到脚本继续运行,那么,当tee仍在按预期运行/等待输入时,您一定没有看到流程树中的脚本。如果问题再次出现,请确保脚本和tee正在写入的分区在执行期间没有耗尽空间。如果不是这样,您将希望在sputnick提到的调试模式下运行脚本。