并行处理 Linux 命令并行处理 Linux 命令并行处理 Linux 命令并行处理 Linux 命令
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

并行处理 Linux 命令

并行处理命令可以简化您在 Linux 中执行多个命令时的工作。作为 Linux 管理员,您可以并行处理多个命令来执行各种任务,例如重新启动服务、安装系统补丁和安装应用程序。

在命令行中组合两个或多个命令称为命令链接。您可以使用命令链并行执行多个命令。

您可以轻松地同时链接不同的命令以简化流程。因此,在这篇长篇指南中,我们将解释您可以尝试并行处理 Linux 命令的每个过程。

并行处理 Linux 命令

在 Linux 中,您可以使用多个运算符和命令并行运行多个命令。现在我们将了解如何在多种条件下通过不同的运算符并行运行多个命令。

使用 & 运算符

在 Linux 中,您可以在一个命令后使用“&”符号同时运行多个命令。使用这个内置的 bash 与号或运算符会使 shell 运行下一个命令,而无需等待当前正在运行的命令,并且这些命令是并行运行的。

command1 & command2…

例如,我们使用 & 运算符一起运行 ls 和 cat 命令。

ls & cat Linux.txt
[1] 6178
Don't erase the existing data. 
Desktop    file.sh      Myfile     prateek.pcap       Templates

您可以看到同时运行上述两个命令会显示输出。 cat 命令显示“Linux.txt”文件的内容,而 ls 命令显示当前目录中的所有文件。

将 Wait 与 & (& 🙂 一起使用

您可以使用 wait (:) 和 & 运算符同时执行多个命令。 & 运算符的工作方式类似,但“wait (:)”会在将控制权返回到 shell 之前停止所有后台任务以完成。通过这种方法,您可以运行批量操作,其语法如下所示 -

command1 & : command2
.
.
.
command3

为了更好地理解此方法,让我们使用 & 运算符一起运行 bash 文件和 ls 命令。当这些命令向后运行时,我们通过运行 uptime 命令来显示当前时间的详细信息。

./file.sh & : ls
[1] 3650
 Desktop    file.sh     Myfile    prateek.pcap      Templates 
  Documents 
uptime
19:06:59 up 1 min, 1 user, load average: 1.31, 0.55, 0.20
[1]+ Done            ./file.sh

此方法的缺点之一是只有在所有批处理完成后才能启动新进程。要解决这个问题,可以使用 xargs 命令。

使用 Xargs

Linux 中的 xargs 命令指定要同时运行的进程数。您可以使用 xargs 命令在 Linux 中并行执行多个输入参数。在这里,我们将以下 xargs 命令与 ls 命令进行管道传输,以便它在 ls 输出的每个文件上并行使用 3 个进程。

ls | xargs -P 3 -n 2
Desktop Documents
Downloads example.txt
File.sh Linux.txt
Pictures Points
Prateek.pcap Public
Snap source.sh
Templates

前一个进程完成后,Xargs 就会启动另一个进程。在上面的示例中,我们使用 -P 和 -n 参数指定并行任务的数量,以调用每次调用的参数数量。

使用分号 (;) 运算符

通过分号(;)运算符,您可以连续运行各个命令,而不管您之前的命令是否成功。

command 1; command2;.....

在这里,我们将运行所有三个命令 pwd、ls 和 uptime,并在终端中用分号 (;) 分隔它们,如下所示 -

pwd; ls; uptime
/home/prateek
Desktop    file.sh     Myfile    prateek.pcap      Templates 
Documents 
12:36:51 up 1 min, 1 user, load average: 3.14, 1.09, 0.39

[pwd] 定位当前目录,[ls] 显示当前目录的列表,[uptime] 提供与时间相关的信息,例如当前时间、负载平均值、在线用户数等。一起运行这三个命令在终端中会立即告诉您以上所有信息。请记住,命令和分号之间不应有任何空格。

使用 | (管道)操作员

您可以使用管道运算符并行执行多个命令。通过该运算符,您可以组合并顺序执行两个或多个命令。

command 1 | command 2 | command 3….

例如,这里我们将首先读取名为“Linux1.txt”的文本文件的内容,然后在第二个命令中搜索其中名为“erasing”的关键字。

cat Linux.txt | grep erasing
Don't erase the existing data.

在这里,我们使用 cat 命令显示了“Linux.txt”文件的内容。通过 grep 命令,我们从该文件中搜索了关键字“erasing”,以红色突出显示。

使用 GNU 并行

GNU 是 Linux 中的一个命令行工具,通过它您可以在远程服务器或本地计算机上并行执行 Linux 命令。它允许您同时运行多个从标准或文件输入获取输入的命令实例。

该工具未预安装在 Linux 发行版中,但位于存储库中。因此,您可以通过以下命令安装它 -

sudo apt install parallel -y (for Debian/Ubuntu-based distros)
yum install parallel (for RedHat-based distros)

使用 Bash 脚本

通过bash脚本,您可以并行运行多个命令。但是,您必须先创建一个 bash 文件。您可以在此 bash 文件中输入要运行的所有命令。之后,您只需运行该 bash 脚本,然后您将得到所有命令的结果。

让我们通过以下命令创建一个名为“file.sh”的 bash 文件,并在其中输入所有命令 -

nano file.sh
#! /bin/bash 
touch myfile.txt
echo "tutorials Point" > myfile.txt
ls && cat myfile.txt
  • 在此脚本中,我们首先使用 touch 命令创建了一个名为“myfile”的文件。

  • 之后,使用 echo 命令在此文件中输入文本“Tutorials Point”。

  • 最后,使用 ls 命令找到当前目录,然后使用 cat 命令查看文件“myfile”的内容。

按 Ctrl+O 保存此文件,然后按 Ctrl+X 退出。此外,我们可以通过以下 chmod 命令使文件可执行 -

chmod +x file.sh

让我们运行上面创建的 bash 文件,以便我们输入的任何命令都将并行运行并显示输出。

./file.sh
Desktop    file.sh     Myfile    prateek.pcap      Templates 
Documents 
Tutorials Point

从上面的输出来看,系统已经执行了脚本中提到的所有命令。

使用 && (AND) 运算符

您可以使用“&&”运算符分隔多个命令并按顺序运行它们。在此操作符中,系统将在第一个命令成功执行后执行第二个命令。

command 1 && command 2…

例如,如果我们必须创建一个名为“MyFile”的目录,然后更改为该目录,则可以通过 && 运算符成功运行这两个进程。

mkdir MyFile && cd MyFile
:~/MyFile$

可以看到上面的命令运行成功了,首先你的目录被创建了,然后你就进入了其中。

使用 (||) 运算符

在某些情况下,当您同时运行两个或多个命令时,您希望在第一个命令失败或出现错误时执行以下命令。您可以使用两个竖线 (||) 或逻辑 OR 运算符。

仅当第一个命令失败时,“OR”运算符才会执行以下命令。如果第一个命令成功运行,则下一个命令将不会执行。

command 1 || command 2…

让我们检查一下系统是否包含“Myfile”目录;如果它不可用,则系统必须创建它。我们将使用以下命令并使用逻辑“OR”运算符 -

[ -d ~/Myfile ] || mkdir ~/Myfile

在此示例中,第一个命令 [ -d ~/Myfile ] 失败,因为没有目录名为“Myfile”,因此系统的第二个命令运行 [mkdir ~/Myfile] 来创建 MyFile 目录。

组合多个运算符

您可以组合上述运算符并根据您的要求同时运行它们。让我们在这里组合 AND (&&) 和 OR (||) 运算符。例如,我们将检查系统中“myfile.txt”文件的可用性,但如果它不存在,系统将创建或打印消息“文件存在” -

[ -f ~/myfile.txt ] && echo "File exists." || touch ~/myfile.txt
File exists

您可以看到该文件已经在文件系统中,因此它打印“文件存在”。

结论

当您想要同时运行多个命令时,命令链非常有用。在本文中,我们解释了使用多个命令和运算符并行处理 Linux 命令的各种方法。本教程包括几乎所有可能的方法,如 (&)、(||)、(;)、(|)、运算符、bash 方法、GNU 并行方法,以及使用更多命令和运算符。

©2015-2025 艾丽卡 support@alaica.com