所以前几天我在家里的 Windows 7 旁边的一个分区中安装了 Ubuntu 14.04 LTS。由于我不能在家观看 YouTube 上的 Sailplane Grand Prix 直播,我决定使用 livestreamer (http://livestreamer.readthedocs.org/en/latest/) 使用其 -o 选项将其保存到文件中。
这工作正常(我认为 - 今天正在进行测试,我会在今晚回家时看看它是什么样子)除了我必须在早上离开家之前启动命令,并且广播只在中午左右开始,导致早上浪费一些带宽。
所以显然应该使用 cron 来安排它,对吧?但是,从 cron 运行它时它永远不会创建输出文件。我使用的 cron 行如下:
38 23 13 05 * ./getfaisgpstream 2> /home/me/getfaisgpstream.log
就像我说的,时间一天天过去,文件 /home/me/faisgp20140513 并没有像从终端运行 livestreamer 时那样出现。我知道 crontab 行需要以换行符结尾的问题,我故意在文件底部留了一个空行来解决这个问题。
我使用 crontab -e 来更改 cron 文件。
我在“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
是的,这让它变得太强大了 - 但无论如何,我现在正在寻找一个简单的破解方法,可以解决这个问题,以便明天录制广播。
答案1
我找到了我的问题的答案:cron 没有获得与您的终端相同的环境变量。
它肯定不会将您的主文件夹作为起始工作目录。因此,说...
./getfaisgpstream
...不起作用。您需要做的是:
/home/me/getfaisgpstream
因为它也没有获得与您在终端中相同的路径,所以说......
livestreamer --hds-timeout 300 ...
... 也不起作用。您需要做的是:
/usr/local/bin/livestreamer