Так на днях я установил Ubuntu 14.04 LTS дома в разделе рядом с Windows 7. Поскольку я не могу быть дома для смотрения Гран-при Планера в прямом эфире, как передано потоком на YouTube, я решил использовать livestreamer (http://livestreamer.readthedocs.org/en/latest/) для сохранения его в файл с помощью его-o опции.
Это хорошо работает (я думаю - тест работает сегодня, и я буду видеть то, на что похоже, когда я возвращаюсь домой сегодня вечером) за исключением того, что я должен запустить команду прежде, чем уехать из дома утром, и широковещательная передача только запускается около середины дня, ведя к некоторой потраченной впустую пропускной способности утром.
Таким образом, очевидная вещь состоит в том, чтобы использовать крон для планирования его, правильно? Только, при выполнении его от крона он никогда не создает выходной файл. Строка крона, которую я использую, является этим:
38 23 13 05 * ./getfaisgpstream 2> /home/me/getfaisgpstream.log
Как я говорю, время приходит и уходит, и файл/home/me/faisgp20140513 не появляется как оно, делает при выполнении livestreamer от терминала. Я знаю о проблеме, где crontab строки должны закончиться в новой строке, и я целеустремленно оставил пустую строку у основания файла для питания это.
Я использовал crontab-e для изменения файла крона.
Вывод я вхожу в "getfaisgpstream.log":
./getfaisgpstream: 6: ./getfaisgpstream: livestreamer: not found
Содержание файла "./getfaisgpstream":
echo
echo ======= livestreamer script running to get FAI SGP 2014 stream and save it in home: [`date`]
echo
while true; do
livestreamer --hds-timeout 300 --hls-timeout 300 --rtmp-timeout 300 --http-timeout 300 --http-stream-timeout 300 -fo /home/me/Videos/faisgp`date +%Y%m%d` http://www.youtube.com/watch?v=xmy5VHAvNMg best
echo ======= livestreamer terminated, restarting [`date`]
echo; done
echo
echo ======= livestreamer script exiting [`date`]
echo
И да это делает это слишком устойчивым - но безотносительно, я после простого взлома прямо сейчас, который решит это для записи широковещательной передачи завтра.
Я нашел ответ на свой вопрос: крон не получает те же переменные среды, которые делает Ваш терминал.
Это, конечно, не получает Вашу домашнюю папку как начинающий рабочий каталог. Поэтому высказывание...
./getfaisgpstream
... не работает. То, что необходимо сделать вместо этого:
/home/me/getfaisgpstream
, Так как это также не получает тот же путь, который Вы делаете в своем терминале, говоря...
livestreamer --hds-timeout 300 ...
... не работает также. То, что необходимо сделать вместо этого:
/usr/local/bin/livestreamer