Сценарий оболочки с трубами, не работающими в crontab

У меня есть сценарий оболочки, который отлично работает при запуске вручную, но сбой при запуске через 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

Как оказалось, на самом деле проблема заключалась в файле python и cron, но не в проблеме с файловыми дескрипторами (stdin / stdout) так, как я ожидал.

Скорее, в соответствии с этим ответом возникает строка, запрашивающая ввод пользователя во время работы через cron. Я решил проблему, удалив запрос для ввода пользователем, так как для меня это было лишним.