惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
Threatpost
P
Privacy International News Feed
T
Tenable Blog
Know Your Adversary
Know Your Adversary
C
Cisco Blogs
P
Proofpoint News Feed
Spread Privacy
Spread Privacy
G
GRAHAM CLULEY
爱范儿
爱范儿
U
Unit 42
K
Kaspersky official blog
C
Cybersecurity and Infrastructure Security Agency CISA
Jina AI
Jina AI
O
OpenAI News
L
LangChain Blog
PCI Perspectives
PCI Perspectives
P
Privacy & Cybersecurity Law Blog
Latest news
Latest news
Cisco Talos Blog
Cisco Talos Blog
F
Full Disclosure
L
Lohrmann on Cybersecurity
V
V2EX
L
LINUX DO - 热门话题
S
Security Affairs
量子位
Martin Fowler
Martin Fowler
云风的 BLOG
云风的 BLOG
Schneier on Security
Schneier on Security
月光博客
月光博客
MyScale Blog
MyScale Blog
C
CERT Recently Published Vulnerability Notes
AWS News Blog
AWS News Blog
博客园 - 叶小钗
Forbes - Security
Forbes - Security
W
WeLiveSecurity
T
Troy Hunt's Blog
J
Java Code Geeks
Hacker News - Newest:
Hacker News - Newest: "LLM"
Google DeepMind News
Google DeepMind News
Attack and Defense Labs
Attack and Defense Labs
Apple Machine Learning Research
Apple Machine Learning Research
雷峰网
雷峰网
Google Online Security Blog
Google Online Security Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
TaoSecurity Blog
TaoSecurity Blog
H
Help Net Security
The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

XINDOO

关于内卷,几个值得深想的洞察 当创作被 Skill 化:我用 AI 写了一部 320 章的长篇网文 AI第一剑,先斩程序员 AI 也会偷懒?这个 PUA 工具专治“摸鱼式编程” Gstack 深度解析:YC CEO 开源的 AI 工程团队 GitHub Trending霸榜!深度解析AI Coding辅助神器 Superpowers 深度探讨:从 OpenClaw 爆火,看 AI Agent 的真相与程序员的未来 我复刻了NotebookLM的信息图功能 我用AI写了部小说,这里是整个过程 [翻译]我在谷歌14年学到的21堂课 2万字吊打40万字:为什么我的“牛马Agent”比“数字分身”更聪明? 最近AI领域爆火的 Agent Skills 是什么? 从计算机科学的视角来看拖延症 一周改6个库后我悟了:AI时代,程序员正在退化成“甲方” 使用n8n做一个自动同步更新的Github项目问答机器人 Agent设计模式——第 20 章:优先级排序 Agent设计模式——第 1 章:提示词链 Agent设计模式——附录 D - 使用 AgentSpace 构建 Agent Agent设计模式——第 19 章:评估和监控 Agent设计模式——第 10 章:模型上下文协议 (MCP) Agent设计模式——第 21 章:探索和发现 Agent设计模式——智能体设计模式 Agent设计模式——第 11 章:目标设定和监控 Agent设计模式——第 9 章:学习和适应 Agent设计模式——第 16 章:资源感知优化 Agent设计模式——附录 G - 编码 Agent Agent设计模式——第 13 章:人机协同 Agent设计模式——第 17 章:推理技术 Agent设计模式——附录 F - 深入剖析:Agent 推理引擎的内部运作机制 Agent设计模式——章节目录 Agent设计模式—— Agent设计模式——第 7 章:多 Agent 协作 Agent设计模式——附录 E - 命令行界面中的 AI Agent Agent设计模式——附录 C - Agentic 框架快速概览 Agent设计模式——第 3 章:并行化 Agent设计模式——**常见问题解答:Agentic 设计模式** Agent设计模式——第 14 章:知识检索(RAG) Agent设计模式——第 18 章:Guardrails/安全模式 Agent设计模式——第 15 章:Agent 间通信(A2A) Agent设计模式——第 8 章:内存管理 Agent设计模式——第 12 章:异常处理和恢复 Agent设计模式——第 4 章:反思 Agent设计模式——附录 B - AI Agentic 交互:从图形界面到现实世界环境 Agent设计模式——第 5 章:工具使用(函数调用) Agent设计模式——结论 Agent设计模式——第 6 章:规划 Agent设计模式——第 2 章:路由 从经验主义到贝叶斯理论:如何排查线上问题 我用AI为自己造了一把安全的开发者“瑞士军刀”” 从LLM和MCP的协同过程看如何做优化 打通Dify与AI工具生态:将Workflow转为MCP工具的实践 一文了解知识库背后的技术RAG AI应用的五个级别:从入门到专家的进阶之路 一文入门AI圈最近爆火的MCP协议 HTTP/3:性能改进(第 2 部分) deepseek-r1祛魅:从过度热捧到理性认知⁠ 为什么AI智能体需要工作流 如何用GPT-4o解读视频 json命令行处理神器jq介绍 OpenAI的结构化浅析 从大模型的原理到提示词优化 从经济学原理看团队分工合作 [翻译]关于人工智能的30个思考 从马斯洛需求层次理论谈职场激励 知识与智慧 如何使用大语言模型绘制专业图表 两个开源项目打造自己的大模型聚合平台 我让gpt4o给我推荐了一千多次书 得到了这些数据 用Langchain创建一个可以总结网页内容的Agent 推荐一个好用的命令行工具ShellGPT 关于ffmpeg height not divisible by 2的错误 使用Certbot解决https证书自动更新的问题 Spring Cache简明教程 软件开发中的抓大放小vs极致细节思维 OpenAI Assistants-API简明教程 OpenAI的多函数调用(Multiple Function Calling)简介 如何使用ffmpeg制作透明背景的视频 spring-kafka中ContainerProperties.AckMode详解 如何在地图上寻找最密集点的位置? IO密集型服务提升性能的三种方法 职场中的基本归因错误和自利归因 使用javax.validation.constraints校验参数合法性 Java Optional:让你的代码更优雅 ChatGPT函数调用初体验:让ChatGPT具备抓取网页文本的能力 如何使用ChatGPT提升自己的“码”力? 使用ffmpeg拼接两张图片 ThreadPoolExecutor——高效处理并发任务的必备良器 从CPU的视角看 多线程代码为什么那么难写! 使用ffmpeg缩小视频体积的几种方式 为什么说过早优化是万恶之源? Linux xargs命令介绍 深入理解Spring的事件通知机制 Java高并发之CyclicBarrier简介 聊一聊过度设计! 详解Redisson分布式限流的实现原理 Java中使用HashMap时指定初始化容量性能一定会更好吗? 如何用ffmpeg截取视频片段&截取时间不准确的坑 XINDOO的2022年年终总结 使用ffmpeg将视频转成HLS(m3u8)格式 谷歌Guava LoadingCache介绍
Linux parallel 命令使用手册
xindoo · 2023-04-10 · via XINDOO

引言

  GNU Parallel是一个开源的命令行工具,可以将多个命令行作业并行执行。它可以用于在多个CPU或计算机上同时运行命令行作业,从而提高作业处理速度。Parallel还可以帮助您更好地利用系统资源,节省时间和精力。

  在日常工作中,我们经常需要处理大量的命令行作业,例如搜索文件、处理数据、编译代码等等。这些作业通常需要花费大量的时间和精力,而且可能会占用大量的系统资源。如果我们能够将这些作业并行执行,那么就可以提高作业处理速度,节省时间和精力。

  GNU Parallel提供了一种简单、灵活和高效的方式来并行执行命令行作业。它可以在多个CPU或计算机上同时运行作业,从而利用系统资源,提高作业处理速度。Parallel还可以帮助您更好地控制并行度和资源利用率,从而避免系统负载过高和资源浪费。

  在本博客中,我们将介绍GNU Parallel的基本概念、用法和优缺点。我们将演示如何使用Parallel来加速命令行作业、控制并行度和资源利用率,并提供一些使用Parallel的最佳实践和建议。如果您需要在Linux系统上处理大量的命令行作业,那么GNU Parallel是一个值得尝试的工具。

安装和配置GNU Parallel

安装

  GNU Parallel可以在Linux和其他Unix-like操作系统上运行,可以通过软件包管理器或源代码进行安装。在Debian/Ubuntu系统中,您可以使用以下命令来安装GNU Parallel:

sudo apt-get update
sudo apt-get install parallel

  在Red Hat/CentOS系统中,您可以使用以下命令来安装GNU Parallel:

sudo yum install parallel

  如果您想要安装最新版本的GNU Parallel,您可以从官方网站下载源代码,并按照以下步骤进行编译和安装:

wget https://ftpmirror.gnu.org/parallel/parallel-latest.tar.bz2
tar xjf parallel-latest.tar.bz2
cd parallel-*
./configure
make
sudo make install

配置

  安装GNU Parallel后,您需要进行一些基本配置,以便使用Parallel来并行执行命令行作业。以下是一些常见的配置选项:

  • --jobs:指定要并行执行的作业数量
  • --load:指定要使用的系统负载
  • --memfree:指定要保留的系统内存量
  • --noswap:禁用交换空间
  • --nice:指定要使用的进程优先级
  • --timeout:指定作业的超时时间

  您可以在命令行中使用这些选项来配置Parallel。例如,以下命令将使用Parallel并行执行5个作业,并使用系统负载不超过2:

parallel --jobs 5 --load 2 command1 ::: arg1 arg2 arg3

  您还可以将这些选项添加到Parallel的配置文件中,以便每次使用Parallel时自动加载这些选项。Parallel的配置文件通常位于用户主目录下的“~/.parallel/config”文件中。您可以编辑此文件,并添加您的配置选项,例如:

--jobs 5
--load 2
--timeout 60

  在本博客中,我们介绍了如何安装和配置GNU Parallel。如果您想要使用Parallel来并行执行命令行作业,那么您需要进行一些基本配置,以便Parallel可以更好地适应您的环境和需求。

GNU Parallel的基本用法

  GNU Parallel的基本用法非常简单,您只需要将要执行的命令和参数传递给Parallel即可。以下是一个基本的使用示例:

parallel command1 ::: arg1 arg2 arg3

  在这个示例中,我们使用Parallel并行执行command1命令,并使用:::符号传递arg1、arg2和arg3参数。Parallel会自动将这些参数分成多个块,并并行地处理它们。您可以使用其他选项来控制并行度和资源利用率,例如--jobs选项来指定要并行执行的作业数量,--load选项来指定要使用的系统负载等等。

  Parallel还支持使用{}符号来动态生成参数。例如,以下命令将使用{}符号生成参数,并将它们传递给command1命令:

parallel command1 {} ::: $(seq 1 10)

  在这个示例中,我们使用seq命令生成1到10的数字序列,并使用{}符号将它们传递给command1命令。Parallel会自动将数字序列分成多个块,并并行地处理它们。

  Parallel还支持使用管道和输入文件来处理数据。例如,以下命令将使用管道将data.txt文件中的数据传递给command1命令:

cat data.txt | parallel command1

  在这个示例中,我们使用cat命令将data.txt文件中的数据传递给Parallel,并将它们传递给command1命令。Parallel会自动将数据分成多个块,并并行地处理它们。

  在本博客中,我们介绍了GNU Parallel的基本用法。如果您想要使用Parallel来并行执行命令行作业,那么您只需要将要执行的命令和参数传递给Parallel即可。Parallel会自动将参数分成多个块,并并行地处理它们。

GNU Parallel的高级用法

  除了基本用法,GNU Parallel还有很多高级用法,可以帮助您更好地控制并行度和资源利用率,以及处理大量的数据和作业。以下是一些常见的高级用法:

1.在多个计算机上并行执行作业

  除了在单个计算机上并行执行作业外,GNU Parallel还可以在多个计算机上并行执行作业。这需要您在每个计算机上安装Parallel,并使用ssh命令将作业发送到远程计算机上。以下是一个使用Parallel在多个计算机上并行执行作业的示例:

parallel --sshloginfile hosts.txt command1 ::: arg1 arg2 arg3

  在这个示例中,我们使用Parallel将作业发送到hosts.txt文件中列出的多个计算机上。Parallel会自动在远程计算机上启动作业,并将结果发送回本地计算机。您可以使用其他选项来控制远程计算机上的作业执行方式,例如--sshuser选项来指定远程计算机上的用户。

2.从文件中读取命令行参数

  除了使用:::符号和{}符号传递参数外,GNU Parallel还可以从文件中读取命令行参数。这可以帮助您处理大量的参数,而无需在命令行中手动输入每个参数。以下是一个从文件中读取命令行参数的示例:

parallel -a args.txt command1

  在这个示例中,我们使用Parallel从args.txt文件中读取命令行参数,并将它们传递给command1命令。args.txt文件中每行包含一个参数,例如:

arg1
arg2
arg3

3.生成详细的日志和报告

  GNU Parallel可以生成详细的日志和报告,以便您更好地了解作业的执行情况和性能。以下是一些常见的日志和报告选项:

  • --joblog:指定要生成的作业日志文件
  • --resume:从上次中断的地方继续执行作业
  • --tag:为每个作业添加标记,方便查看日志和报告
  • --results:指定要生成的结果文件夹

  您可以使用这些选项来生成详细的日志和报告,并对作业的执行情况进行分析和优化。

  在本博客中,我们介绍了GNU Parallel的一些高级用法。如果您想要更好地控制并行度和资源利用率,以及处理大量的数据和作业,那么这些高级用法可能会对您有所帮助。

GNU Parallel的优缺点

  GNU Parallel是一个强大的并行计算工具,可以帮助您加速命令行作业的执行,提高系统资源利用率,以及处理大量的数据和作业。然而,它也有一些优缺点,需要您在使用时进行权衡。

优点

加速作业执行: GNU Parallel可以将作业分成多个块,并并行地执行它们,从而加速作业的执行。这可以帮助您节省时间和提高工作效率。

提高系统资源利用率: GNU Parallel可以利用多个CPU核心和计算机节点来执行作业,从而提高系统资源利用率。这可以帮助您更好地利用计算资源,提高系统的吞吐量和效率。

处理大量的数据和作业: GNU Parallel可以处理大量的数据和作业,而无需手动分割和处理它们。这可以帮助您更好地管理和处理数据,提高数据处理的效率和准确性。

灵活的参数传递方式: GNU Parallel支持多种参数传递方式,包括:::符号、{}符号、文件和管道等。这可以帮助您更好地控制参数的传递方式,提高程序的灵活性和可扩展性。

缺点

学习曲线较陡: GNU Parallel的使用需要一定的学习曲线,特别是在使用高级功能时。这需要您花费一些时间和精力来学习和掌握。

可能存在并发问题: 由于GNU Parallel是一个并发计算工具,可能存在一些并发问题,例如竞争条件、死锁和资源争用等。这需要您在使用时进行注意和处理,以避免出现问题。

需要足够的系统资源: 由于GNU Parallel需要利用多个CPU核心和计算机节点来执行作业,因此需要足够的系统资源来支持。如果您的系统资源较为有限,可能会影响作业的执行效率和质量。

可能存在数据依赖性问题: 由于GNU Parallel是并行执行作业的,因此可能会存在数据依赖性问题,例如某些作业需要依赖于其他作业的输出。这需要您在使用时进行注意和处理,以避免出现问题。

  总之,虽然GNU Parallel有一些缺点,但只要您在使用时进行注意和处理,就可以最大化地发挥其优势,提高工作效率和数据处理的准确性。

结论

  GNU Parallel是一个强大的并行计算工具,可以帮助您加速命令行作业的执行,提高系统资源利用率,以及处理大量的数据和作业。它具有许多优点,例如加速作业执行、提高系统资源利用率、处理大量的数据和作业、灵活的参数传递方式等。然而,它也有一些缺点,例如学习曲线较陡、并发问题、需要足够的系统资源、可能存在数据依赖性问题等。

  总之,GNU Parallel是一个非常有用的工具,可以帮助您更好地管理和处理数据,提高工作效率和准确性。如果您需要处理大量的数据和作业,或者需要利用多个CPU核心和计算机节点来执行作业,那么GNU Parallel是一个非常好的选择。然而,在使用时需要注意其缺点,并进行相应的处理和优化,以最大化地发挥其优势。

备注:本文使用chatGPT辅助制作