Остановите все дочерние процессы, созданные из сценария youtube-dl - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь создать youtube-dl архивный скрипт, который соответствует определенному количеству моих потребностей.Пока что у меня есть скрипт ниже, запущенный в /etc/cron.daily, но он не позволяет мне делать некоторые вещи, которые я считаю необходимыми из-за сетевых ограничений.Поскольку я хочу, чтобы скрипт выполнял все загрузки одновременно, я не могу легко остановить загрузки, не отслеживая отдельные идентификаторы PID.Я пытался превратить этот скрипт в сервис, но не уверен, что это будет правильным решением для того, что я пытаюсь сделать.

В конечном итоге я хочу сделать остановкусценарий так же просто, как вводить что-то вроде youtube-dl_archive stop, при этом позволяя сценарию автоматически запускаться ежедневно.

#!/bin/sh
umask 022
cat /mnt/archive/youtube-dl/youtube-dl_channels | while read line
do
        if [[ $line = "channel"* ]]; then
                archivedir=$(cut -c34- <<< "$line")
                channeluid=$(cut -c-32 <<< "$line")
        elif [[ $line = "user"* ]]; then
                archivedir=$(cut -c6- <<< "$line")
                channeluid="$line"
        fi

        exec &> /var/log/youtube-dl/$archivedir-[$(date +"%m.%d.%Y_%H-%M-%S")].log
        youtube-dl\
                -civw\
                --newline\
                --all-subs\
                --no-mtime\
                --embed-subs\
                --add-metadata\
                --write-thumbnail\
                --prefer-ffmpeg\
                --merge-output-format mkv\
                --download-archive /mnt/archive/youtube-dl/"$archivedir"/"$archivedir"-archive.txt\
                https://www.youtube.com/$channeluid\
                -o "/mnt/archive/youtube-dl/$archivedir/'%(uploader)s'-(%(uploader_id)s)_%(upload_date)s_'%(title)s'_
[%(resolution)s]_[%(id)s].%(ext)s"
done
...