Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个运行 mysqld 和 fork 以继续运行的服务器脚本。举个例子:
./mysqld <parameters> & echo "Parent runs next line in script." <do more stuff>
为什么 tee 等待子进程结束才结束?
编辑:
例如,以下始终挂起:
./myscript | tee -a logfile.log
因为如果子进程仍在运行(并且仍然打开其标准输出),它无法确定它是否已经完成了所有输出。
由于父母和孩子使用相同的标准输出(由于管道连接到tee的输入),因此无法tee区分它们。由于它消耗所有输入,因此父母和孩子都必须关闭他们的标准输出(或终止)才能tee看到和输入结束条件。
tee
如果您想tee在父脚本退出时退出,您应该将子脚本的输出重定向(到文件或/dev/null例如)。
/dev/null