【问题标题】:Shell script: create new bash processesShell 脚本:创建新的 bash 进程
【发布时间】:2025-09-20 21:35:01
【问题描述】:

我正在尝试快速批量下载 Youtube 视频。我创建了一个文件 videos.txt,每行一个视频链接:

http://www.youtube.com/watch?v=**********
http://www.youtube.com/watch?v=**********
http://www.youtube.com/watch?v=**********
...

我有一个可以下载视频的 shell 脚本:

cat videos.txt | while read line; do 
    echo $line
    youtube-dl $line
done

但是,我想通过将每个 youtube-dl 命令分支到其自己的进程/终端窗口来加快进程。 如何为每个 youtube-dl 命令创建一个新的终端窗口/进程

注意:我尝试在 youtube-dl 命令前面加上 /bin/bash -c,但脚本非常有问题......它不会下载所有视频。

【问题讨论】:

    标签: bash terminal


    【解决方案1】:

    改变这一行:

    youtube-dl $line
    

    youtube-dl $line &
    

    & 在后台启动作业,允许父脚本继续。

    但是,如果您要抓取一长串网址,请小心执行此操作。 Youtube 会因为你吸干他们的网站而皱眉,而且你的系统上有太多的下载进程可能会使事情停止或彻底崩溃。

    【讨论】:

    • 啊哈!有用!顺便说一句,这只是一个测试。我不想让 Youtube 的服务器崩溃和/或让他们的系统管理员发疯……我的列表中只有六个视频。 :D
    【解决方案2】:

    Youtube 在其服务条款(Youtube TOS,参见 5-B)中明确禁止这样做。

    【讨论】: