Я хочу использовать команду "youtube-dl" в задании cron для загрузки видео с YouTube. Поэтому я создал следующее задание cron:
26 00 * * * /usr/local/bin/youtube-dl -o '/home/ubuntu/youtube/%(title)s.%(ext)s' http://www.youtube.com/playlist?list=PLbbPU9KV1D2B4woNNQp3bWSotlHVVtRZr
Когда я запускаю эту команду из терминала, она работает без проблем, но если она вызывается из задания cron, она ничего не загружает. Я установил его через apt-get install youtube-dl
.
which youtube-dl
возвращает /usr/local/bin/youtube-dl
Лучший
Измените свою запись в crontab на
26 00 * * * /usr/local/bin/youtube-dl -o '/home/ubuntu/youtube/%(title)s.%(ext)s' http://www.youtube.com/playlist?list=PLbbPU9KV1D2B4woNNQp3bWSotlHVVtRZr > /home/ubuntu/youtube/Log 2>&1
Вы даже увидите журнал активности в файле /home/ubuntu/youtube/Log
.
Редактировать: Исходный код пытался выполнить строковую константу. Амперсанд в конце концов также был излишним.
Я решил эту проблему, создав скрипт bash со следующим содержимым.
#!/bin/bash
/usr/local/bin/youtube-dl -xwik -r 1M http://video.kings.nhl.com/videocenter/ -o '/data/www/kv/%(title)s-%(id)s.%(ext)s' >> /data/www/kv/out.txt
Я перепробовал кучу других вещей, и в итоге /usr/local/bin/youtube-dl
заработал. Я также не уверен, что это могло бы заставить работать линию cron без сценария.
%
символ в поле команды crontab специален. Необходимо выйти из каждого с \
символ.
От crontab(5)
:
The "sixth" field (the rest of the line) specifies the command to be
run. The entire command portion of the line, up to a newline or a
"%" character, will be executed by /bin/sh or by the shell specified
in the SHELL variable of the cronfile. A "%" character in the
command, unless escaped with a backslash (\), will be changed into
newline characters, and all data after the first % will be sent to
the command as standard input.