Linux 后台处理';s重定向的输出未显示在文件中

Linux 后台处理';s重定向的输出未显示在文件中,linux,shell,scripting,expect,sh,Linux,Shell,Scripting,Expect,Sh,当我作为后台进程调用命令时,将命令的输出重定向到文件时遇到问题 产卵器user@host“./.profile>>/dev/null 2>&1;运行作业 SOMEJOB“>test.log& sh脚本使用#/usr/local/bin/expect解释器,它在远程主机上生成一个新进程(SOMEJOB)并与之交互。当我在这条语句的末尾删除符号AND时,输出被写入test.log文件。但是,当我在后台运行它时(使用符号),我的日志文件是空的 各位有什么想法吗?尝试在expect脚本中关闭标准输出缓冲

当我作为后台进程调用命令时,将命令的输出重定向到文件时遇到问题

产卵器user@host“./.profile>>/dev/null 2>&1;运行作业 SOMEJOB“>test.log&

sh脚本使用#/usr/local/bin/expect解释器,它在远程主机上生成一个新进程(SOMEJOB)并与之交互。当我在这条语句的末尾删除符号AND时,输出被写入test.log文件。但是,当我在后台运行它时(使用符号),我的日志文件是空的


各位有什么想法吗?

尝试在expect脚本中关闭标准输出缓冲

fconfigure stdout -buffering none

我对python脚本也有同样的问题,结果是python中的缓冲区。
在python文件2>&1中使用-u选项解决了我的问题


其他脚本语言可能有类似于python的选项-u

即使在脚本完成后也不会出现吗?我可以想象在后台运行会对缓冲产生影响。它不会结束:D。这就是我需要将输出写入文件的原因。我正在解析输出,以便看到所有有用的工作何时完成,从而终止该进程。我的主脚本不会继续,直到我杀死这个子进程。我别无选择,我必须这样做。不要问:expect进程是本地运行还是远程运行?