超时命令不超时
timeout command not timing out
我在长时间 运行 sox 记录超时方面遇到了一些问题。
需要该命令,因为 sox 从进程获取标准输出,但它不是永久的数据流(但会因静默而中断)。但是当 sox 被告知总共要录制 30 秒时,它会一直录制到音频文件有 30 秒的声音为止。所以我希望命令在 35 秒后超时,如果它之前没有完成的话。
bash 脚本中使用的命令:
timeout 35s sox [--some --sox --parameters] trim 0 30
现在的问题是给定的命令可能需要 35 秒到 10 分钟以上的时间,我不知道为什么。
似乎完全随机需要多长时间,音频文件在 1 秒到 13 秒之间。
所以也许这里有人有想法,可能如何解决问题等
terminate signal handler in sox
just sets the flag user_abort
, which is checked by the Callback for monitoring flow progress每个缓冲区一次,所以sox
等到缓冲区变满可以解释信号响应的长时间延迟。如果您指定较小的缓冲区大小,情况可能会有所改善,但这不是解决方案。
我现在注意到您写了 sox 从进程中获取标准输出。如果您 timeout
该进程而不是 sox
,关闭其输入源应该会导致 sox
立即终止。
Unfortunately that's not a suitable solution as the "main process" (sox gets the stdout from) runs 24/7 and shouldn't be interrupted.
您可以改为将 cat
连接到输入,然后 timeout 35 cat | sox …
。
我在长时间 运行 sox 记录超时方面遇到了一些问题。
需要该命令,因为 sox 从进程获取标准输出,但它不是永久的数据流(但会因静默而中断)。但是当 sox 被告知总共要录制 30 秒时,它会一直录制到音频文件有 30 秒的声音为止。所以我希望命令在 35 秒后超时,如果它之前没有完成的话。
bash 脚本中使用的命令:
timeout 35s sox [--some --sox --parameters] trim 0 30
现在的问题是给定的命令可能需要 35 秒到 10 分钟以上的时间,我不知道为什么。
似乎完全随机需要多长时间,音频文件在 1 秒到 13 秒之间。
所以也许这里有人有想法,可能如何解决问题等
terminate signal handler in sox
just sets the flag user_abort
, which is checked by the Callback for monitoring flow progress每个缓冲区一次,所以sox
等到缓冲区变满可以解释信号响应的长时间延迟。如果您指定较小的缓冲区大小,情况可能会有所改善,但这不是解决方案。
我现在注意到您写了 sox 从进程中获取标准输出。如果您 timeout
该进程而不是 sox
,关闭其输入源应该会导致 sox
立即终止。
Unfortunately that's not a suitable solution as the "main process" (sox gets the stdout from) runs 24/7 and shouldn't be interrupted.
您可以改为将 cat
连接到输入,然后 timeout 35 cat | sox …
。