1. 安装Parallel 第一种方法试验可以用
在没有 root 权限的情况下,您仍然可以为自己安装 GNU Parallel。可以使用以下几种方法:通过自解压脚本或使用 conda
环境。
方法 1:自解压脚本安装
-
下载 GNU Parallel 自解压脚本:
wget https://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
-
给脚本添加可执行权限:
chmod +x parallel
-
将 GNU Parallel 放到您的用户路径中:
选择一个目录来存放可执行文件(例如
~/bin
),如果没有该目录,可以创建它:mkdir -p ~/bin mv parallel ~/bin/
-
将该目录添加到您的
PATH
环境变量中:编辑您的
~/.bashrc
文件(或~/.bash_profile
或~/.profile
,具体取决于您的 Shell 配置文件),并添加以下行:export PATH="$HOME/bin:$PATH"
-
重新加载 Shell 配置:
source ~/.bashrc
-
验证安装:
parallel --version
方法 2:使用 Conda 环境(如果已安装 Conda)
如果您已经安装了 Conda,可以使用 Conda 安装 GNU Parallel:
-
创建 Conda 环境(可选):
conda create -n myenv conda activate myenv
-
安装 GNU Parallel:
conda install -c conda-forge parallel
-
验证安装:
parallel --version
方法 3:手动编译和安装
如果无法使用上述方法,也可以手动编译和安装 GNU Parallel:
-
下载 GNU Parallel 源码:
wget https://ftp.gnu.org/gnu/parallel/parallel-latest.tar.bz2 tar -xjf parallel-latest.tar.bz2 cd parallel-<version> # 进入解压后的目录,替换<version>为实际版本号
-
编译和安装到用户目录:
./configure --prefix=$HOME/.local make make install
-
将安装目录添加到您的
PATH
环境变量中:编辑您的
~/.bashrc
文件,并添加以下行:export PATH="$HOME/.local/bin:$PATH"
-
重新加载 Shell 配置:
source ~/.bashrc
-
验证安装:
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
),可以使用以下方法:
-
创建任务列表文件(
tasks.txt
):echo "task1_command" > tasks.txt echo "task2_command" >> tasks.txt echo "task3_command" >> tasks.txt # 继续添加所有任务
-
使用 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 工具可以方便地管理和并行执行大量任务,始终保持一定数量的并行任务在运行。这在处理大量任务、提高资源利用率和缩短总执行时间方面非常有效。