Автоматически загружать и обновлять плейлист YouTube

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

Одна возможность, которая здесь не имеет место, заключается в том, что система использует systemd, где logind.confнастроен с KillUserProcesses=yes. В этом случае закрытие терминала не вызовет проблем, а вот выход из системы будет. Обходной путь в этом случае — использовать

$ systemd-run --scope --user [command]

По сути, это просто сообщает systemd, что он не должен убивать процесс.

Другая возможность заключается в том, что порожденный процесс реализует свой собственный обработчик для SIGHUP, который отменяет защиту nohup. В этом случае проблемы возникнут, как только оболочка будет закрыта, даже если вы остаетесь в системе. Вы можете проверить это с помощью:

$ nohup [command] &
$ grep Sig /proc/$!/status

Вы должны увидеть строку

SigIgn: 0000000000000001

(или любая другая строка шестнадцатеричных цифр ). SIGHUP— это номер сигнала 1, поэтому, если это большое -шестнадцатеричное число с порядком байтов имеет первый (наименьший -значащий )бит, установленный (, то есть последняя цифра — одна из 1, 3, 5, 7, 9, B, D или F ), то SIGHUPигнорируется. В противном случае программа установила собственный обработчик, перекрывающий защиту nohup.

В этом случае решение состоит в использованииdisown:

nohup [command] & disown

Это удаляет процесс из списка заданий оболочки, предотвращая отправку SIGHUPв первую очередь.

0
13.02.2020, 10:31
1 ответ

Используйте эту опцию --download-archive archivefile.txt.

youtube-dl --download-archive FILE

youtube-dlи читает, и добавляет в список файлов, которые нельзя загружать повторно. Каждый раз, когда файл успешно загружается, этот идентификатор видео добавляется в файл.

1
28.04.2021, 23:23

Теги

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