我有一个输出以下内容的命令:
READY
Listening....
HELLO
READY
Listening....
TEST
它是来自 的语音识别pocketsphinx_continuous
。
我需要将输出重定向到一个文件,它似乎不是来自stdout
或,stderr
因为我尝试添加1>log.txt
and 2>log.txt
,每次它们都是空白的。
这是关键:当我添加1>log.txt
到命令时,控制台不再有任何输出,但log.txt
仍然是空白。
另外,当我添加| tee log.txt
它时才不是显示在控制台中,文件仍然是空白的。
此输出是否来自stdout
,如果是,为什么它不被重定向到文件?
这个问题与我的另一个问题相关:将 Pocketsphinx_continuous 的输出重定向到文件
Pocketsphinx 很奇怪,使用它的参数来重定向输出对我来说是不可能的,在这个问题中我只想知道这个输出来自哪里sdtout
或sdterr
其他地方,以及如何重定向该输出。
编辑
ls -l /proc/PID/fd/
返回:
lrwx------ 1 pi pi 64 Jan 4 04:12 0 -> /dev/pts/2
lrwx------ 1 pi pi 64 Jan 4 04:12 1 -> /dev/pts/2
lrwx------ 1 pi pi 64 Jan 4 04:11 2 -> /dev/pts/2
lrwx------ 1 pi pi 64 Jan 4 04:12 4 -> /dev/snd/pcmC0D0c
答案1
可怕的命令:
script -q -f -c "pocketsphinx_continuous -samprate 48000 -nfft 2048 -hmm /usr/local/share/pocketsphinx/model/en-us/en-us -lm 9745.lm -dict 9745.dic -inmic yes -logfn /dev/null" words.txt &
对我有用,它记录:
READY....
Listening...
HELLO
到文件中,很容易清除不需要的东西。
编辑:
如果将来有人自己执行此操作,&
如果您在控制台中执行它,请删除该命令末尾的 ;如果您通过 Python 或其他语言执行它,请保留末尾的&
。