我正在使用需要的应用程序奥斯。需要将结果附加到文件中。当我编写这些命令时,文件始终为空:
aoss multimon -a DTMF | tee test.txt
aoss multimon -a DTMF > test.txt
aoss multimon -a DTMF >> test.txt
我认为问题在于文件日志指向的是aoss
,而不是multimon -a DTMF
,因为后者实际上是前者的参数。有没有办法记录参数命令,同时仍使应用程序可运行?(multimon -a DTMF
是使用名为 multimon 的应用程序进行 DTMF 解码的终端命令)
答案1
您可以将整个multimon
命令放入 shell 脚本并使用 运行该脚本aoss
,或者在 里面启动另一个 shell aoss
:
(shell 1) $ aoss bash
(shell 2) $ multimon -a DTMF > test.txt
(shell 2) $ exit
(shell 1) $
答案2
该方法(一个非常短的 shell 脚本)的工作方式aoss
是使用 预加载一个特殊库LD_PRELOAD
。您也可以手动设置此变量:
export LD_PRELOAD='/usr/$LIB/libaoss.so'
multimon --etc --etc --etc > test.txt
我认为问题在于文件日志指向的是
aoss
,而不是multimon -a DTMF
,因为后者实际上是第一个的参数。
这不是原因。当进程 X 打开或关闭文件(例如设置重定向)并启动进程 Y 时,新进程继承新打开的文件。换句话说,shell 只是设置重定向并运行给定的aoss multimon...
命令,该命令继承了 shell 的重定向输出。同样,当奥斯完成它的事情并最终运行multimon -a DTMF
,多目进程继承了相同的重定向奥斯。