多进程挂起任务parallel

1. 安装Parallel 第一种方法试验可以用

在没有 root 权限的情况下,您仍然可以为自己安装 GNU Parallel。可以使用以下几种方法:通过自解压脚本或使用 conda 环境。

方法 1:自解压脚本安装

  1. 下载 GNU Parallel 自解压脚本

    wget https://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
    
  2. 给脚本添加可执行权限

    chmod +x parallel
    
  3. 将 GNU Parallel 放到您的用户路径中

    选择一个目录来存放可执行文件(例如 ~/bin),如果没有该目录,可以创建它:

    mkdir -p ~/bin
    mv parallel ~/bin/
    
  4. 将该目录添加到您的 PATH 环境变量中

    编辑您的 ~/.bashrc 文件(或 ~/.bash_profile~/.profile,具体取决于您的 Shell 配置文件),并添加以下行:

    export PATH="$HOME/bin:$PATH"
    
  5. 重新加载 Shell 配置

    source ~/.bashrc
    
  6. 验证安装

    parallel --version
    

方法 2:使用 Conda 环境(如果已安装 Conda)

如果您已经安装了 Conda,可以使用 Conda 安装 GNU Parallel:

  1. 创建 Conda 环境(可选)

    conda create -n myenv
    conda activate myenv
    
  2. 安装 GNU Parallel

    conda install -c conda-forge parallel
    
  3. 验证安装

    parallel --version
    

方法 3:手动编译和安装

如果无法使用上述方法,也可以手动编译和安装 GNU Parallel:

  1. 下载 GNU Parallel 源码

    wget https://ftp.gnu.org/gnu/parallel/parallel-latest.tar.bz2
    tar -xjf parallel-latest.tar.bz2
    cd parallel-<version>  # 进入解压后的目录,替换<version>为实际版本号
    
  2. 编译和安装到用户目录

    ./configure --prefix=$HOME/.local
    make
    make install
    
  3. 将安装目录添加到您的 PATH 环境变量中

    编辑您的 ~/.bashrc 文件,并添加以下行:

    export PATH="$HOME/.local/bin:$PATH"
    
  4. 重新加载 Shell 配置

    source ~/.bashrc
    
  5. 验证安装

    parallel --version
    

通过上述任一方法,您可以在没有 root 权限的情况下为自己安装并使用 GNU Parallel。

2. parallel使用

在 Linux 上,如果您有一组任务并希望始终保持一定数量的并行任务在运行(例如,一直保持有 10 个任务在运行),可以使用 GNU Parallel 工具来实现。这是一个功能强大的工具,可以管理并行任务的执行。

安装 GNU Parallel

如果还没有安装 GNU Parallel,可以通过以下命令进行安装:

sudo apt-get install parallel

使用 GNU Parallel 实现始终保持 10 个任务运行

假设您有一个任务列表(例如,一个包含所有任务命令的文件 tasks.txt),可以使用以下方法:

  1. 创建任务列表文件tasks.txt):

    echo "task1_command" > tasks.txt
    echo "task2_command" >> tasks.txt
    echo "task3_command" >> tasks.txt
    # 继续添加所有任务
    
  2. 使用 GNU Parallel 执行任务

    cat tasks.txt | parallel -j 10
    

在这个命令中:

  • cat tasks.txt:将 tasks.txt 文件的内容输出到标准输出。
  • parallel -j 10:指定并行执行的最大作业数为 10。

GNU Parallel 会自动管理并发任务的数量,始终保持 10 个任务在运行。当一个任务完成时,它会立即开始下一个任务,直到所有任务都执行完毕。

动态生成和处理任务

# 生成一个shell命令列表文件 
cat sh.list
find /path1/ -type f > parallel_dir/dir.lst
find /path3/ -type f > parallel_dir/dir2.lst

# parashell多进程执行
cat sh.list | parallel -j 10

读取 sh.lst 文件中的内容,并将每一行作为一个命令执行

使用 --eta 选项监控任务进度

可以使用 --eta 选项来显示预计完成时间, 在执行长时间任务时建议不使用这个参数

cat tasks.txt | parallel -j 10 --eta

总结

使用 GNU Parallel 工具可以方便地管理和并行执行大量任务,始终保持一定数量的并行任务在运行。这在处理大量任务、提高资源利用率和缩短总执行时间方面非常有效。

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值