Youtube-dl отказывается работать в фоне

Я работаю youtube-dl в фоне путем помещения & после команды. Проблема - это, не заботится, что я поместил его в фоновом режиме и храню информацию печати в терминале.

Мало того, что это отказывается останавливаться с Ctrl+C или Ctrl+Z, это просто ничего не делает кроме показа этих сообщений. Для остановки его, я должен закрыть терминал.

Вот то, что происходит точно:

mohamed@Smithers:~$ clear
mohamed@Smithers:~$ youtube-dl https://www.youtube.com/watch?v=LMQsYSuw8hw &
[1] 2028
mohamed@Smithers:~$ [youtube] LMQsYSuw8hw: Downloading webpage
[youtube] LMQsYSuw8hw: Downloading video info webpage
[youtube] LMQsYSuw8hw: Extracting video information
[youtube] LMQsYSuw8hw: Downloading MPD manifest
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[download] Resuming download at byte 11440128
[download] Destination: I Was On Japanese TV... and I F#%KING HATED IT.-LMQsYSuw8hw.f137.mp4
[download]   4.8% of 231.85MiB at 199.01KiB/s ETA 18:56^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
[download]   4.8% of 231.85MiB at 136.95KiB/s ETA 27:30^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
[download]   5.0% of 231.85MiB at 127.41KiB/s ETA 29:31^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
[download]   5.0% of 231.85MiB at 111.38KiB/s ETA 33:44^C
mohamed@Smithers:~$ ^C
[download]   5.0% of 231.85MiB at 111.21KiB/s ETA 33:47^C
mohamed@Smithers:~$ ^C
[download]   5.1% of 231.85MiB at 116.77KiB/s ETA 32:09^C

[download]   5.5% of 231.85MiB at 108.71KiB/s ETA 34:24^C

[download]   5.6% of 231.85MiB at 76.68KiB/s ETA 48:41
1
задан 28 December 2016 в 23:43

1 ответ

youtube-dl работает в фоновом режиме, но это все еще отправляет вывод на Ваш терминал и производит довольно многое из него для информирования Вас о его прогрессе. Существует много способов изменить это, но Вы, вероятно, или захотите сделать youtube-dl произведите менее вывод или заставьте его вывод быть отправленным в файл (или отброшенным в целом) вместо того, чтобы появиться в Вашем терминале.

Путь 1: выполненный youtube-dl -q подавить сообщения о состоянии.

Если Вы не хотите видеть сообщения о ходе выполнения, можно передать -q флаг (или --quiet, который делает то же самое) к youtube-dl команда:

youtube-dl -q https://www.youtube.com/watch?v=NZ-ElsvYKyo &

Необходимо было бы заменить тот URL тем, что Вы пытаетесь загрузить, конечно. Некоторые сообщения могут все еще быть распечатаны, включая ошибки и предупреждения. Но вероятно, что Вы хотите видеть их.

Если Вы не хотите youtube-dl для создания любых предупреждений можно работать youtube-dl с --no-warnings флаг. Я не предлагаю делать это, тем не менее, если Вы не уверены, что это - то, что Вы хотите.

youtube-dl -q --no-warnings https://www.youtube.com/watch?v=NZ-ElsvYKyo &

Узнать больше о параметрах командной строки, принятых youtube-dl, можно работать man youtube-dl или прочитанный его страница руководства онлайн.

Путь 2: Перенаправьте стандартный вывод youtube-dl в файл.

Добавлять вывод к dl.log в текущем каталоге (можно назвать это, что Вы хотите, и это будет создано, если это не будет уже существовать), выполненный:

youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo >> dl.log &

Если Вы хотите перезаписать dl.log вместо того, чтобы добавить текст в конец, использовать > вместо >>:

youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo > dl.log &

Нормальный вывод будет затем перенаправлен к dl.log (или безотносительно файла Вы говорите этому использовать). Вывод ошибок, однако, все еще покажут на Вашем терминале. Например, когда я выполнил ту команду, я получил предупреждение того, распечатанное к моему терминалу:

ek@Io:~$ youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo >> dl.log &
[1] 14456
ek@Io:~$ WARNING: Requested formats are incompatible for merge and will be merged into mkv

Все остальное вошло в файл журнала:

ek@Io:~$ cat dl.log
[youtube] NZ-ElsvYKyo: Downloading webpage
[youtube] NZ-ElsvYKyo: Downloading video info webpage
[youtube] NZ-ElsvYKyo: Extracting video information
[youtube] NZ-ElsvYKyo: Downloading MPD manifest
[download] Destination: Lecture 1 _ Topics in String Theory-NZ-ElsvYKyo.f244.webm
[download]  23.2% of 359.52MiB at 204.49KiB/s ETA 23:02ek@Io:~$

Можно просмотреть вывод с cat (поскольку я сделал выше), в любое время, для проверки прогресса.

Когда Вы работаете youtube-dl без -q, это производит вывод, который, прежде всего, предназначен для терминала. Этот вывод включает управляющие символы, которые говорят терминалу стирать предыдущее сообщение о ходе выполнения, так, чтобы это могло быть визуально заменено новым сообщением о ходе выполнения. Некоторые способы просмотреть файл, как cat dl.log, не покажет "стертые" сообщения или управляющие символы. Они - все еще часть файла, тем не менее, и можно просмотреть их с некоторыми другими утилитами; например, view dl.log работы.

Путь 2a: Перенаправьте вывод к /dev/null избавиться от него.

Если Вы хотите, чтобы вывод просто был отброшен, а не сохранен в фактическом файле, то можно перенаправить его к /dev/null:

youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo > /dev/null &

С /dev/null, не имеет значения, если Вы "перезаписываете" (>) или "добавьте" (>>).

Это - удобная техника в целом, хотя, вероятно, ненужный с youtube-dl. Если Вы хотите подавить прогресс, можно просто работать youtube-dl -q вместо этого.

Путь 3: Перенаправьте стандартную погрешность, также.

Регулярный вывод и вывод ошибок являются отдельными. Это характерно для youtube-dl произвести обоих. Вышеупомянутый метод перенаправил только стандартный вывод. Можно также перенаправить стандартную погрешность. Существует много, можно сделать с перенаправлением, включая перенаправление этих двух потоков вывода для разделения файлов. В наших целях здесь, я просто покажу, как отправить и стандартный вывод и стандартную погрешность в тот же файл:

youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo &>> dl.log &

Когда я выполнил это, моя оболочка показала только

[2] 15009

... и и регулярный вывод и вывод ошибок появились в dl.log:

ek@Io:~$ cat dl.log
[youtube] NZ-ElsvYKyo: Downloading webpage
[youtube] NZ-ElsvYKyo: Downloading video info webpage
[youtube] NZ-ElsvYKyo: Extracting video information
[youtube] NZ-ElsvYKyo: Downloading MPD manifest
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[download] Destination: Lecture 1 _ Topics in String Theory-NZ-ElsvYKyo.f244.webm
[download]   0.0% of 359.52MiB at 107.65KiB/s ETA 56:59ek@Io:~$

Вышеупомянутый пример используется &>>, который добавляет к dl.log. Для перезаписи файла вместо этого, использовать &> (или >&, который также работает) вместо &>>:

youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo &> dl.log &

Путь 3a: Перенаправьте и нормальный и вывод ошибок к /dev/null.

Если Вы действительно хотите, можно перенаправить и стандартный вывод и стандартную погрешность к /dev/null таким образом, это все просто отбрасывается:

youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo &> /dev/null &

Вы, вероятно, хотите видеть фактические сообщения об ошибках, все же. Если это - просто сообщения о состоянии и предупреждения, Вы не хотите, то Вам не нужно никакое перенаправление. В этом случае можно использовать youtube-dl -q --no-warnings как описано выше. (См. Путь 1.)

5
ответ дан 3 December 2019 в 06:38

Другие вопросы по тегам:

Похожие вопросы: