带管道的Shell脚本在crontab中不起作用

andrewmh20

我有一个Shell脚本,在手动运行时可以正常运行,但是在通过crontab运行时却无法运行。该脚本的基本操作如下:

Python script to get audio data and pipe to stdout | ffmpeg the data from stdin and pipe to stdout | stream the data from stdin

通过crontab运行时,流传输失败,并抱怨stdin(...No (more) data available on standard input处没有数据

我找到了这个答案,似乎暗示了crontab中的文件描述符问题,但是我希望您能对此问题有更多的详细了解,以及解决该问题的最佳方法。

编辑:通过尝试每个单独的命令分别对问题进行故障排除,表明问题始于抱怨的python脚本:

close failed in file object destructor:
sys.excepthook is missing
lost sys.stderr"

而不是输出音频数据。遵循此处此处的建议(将sys.stdout.flush()添加到文件末尾),我可以看到实际的错误消息是:

Traceback (most recent call last):
  File "/home/*username*/testing.py", line 109, in <module>
    sys.stdout.flush()
IOError: [Errno 9] Bad file descriptor

所以也许更多的是python问题..尽管从错误来看它仍然与stdin / stdout有关

andrewmh20

事实证明,问题确实出在python文件和cron上,而不是文件描述符(stdin / stdout)出现的问题。

相反,按照此答案,在通过cron运行时,有一行要求用户输入的行引起了问题。我通过删除用户输入请求解决了该问题,因为对我而言这是不必要的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章