如何对Linux命令进行排队并一次执行一个命令

今天我们遇到了Linux中的命令行实用程序 “任务假脱机程序” … 顾名思义,任务假脱机程序是Unix批处理系统,可用于对Linux命令进行排队并按顺序依次执行它们(准确地说,是升序)。 请不要将其与命令混淆 “在”用于在给定时间执行Linux命令。 不像团队 任务假脱机程序 前一个命令完成后,立即从队列中运行命令。

当您有许多命令要执行时,它非常有用,但是您不想浪费时间等待一个命令完成并运行下一个命令。 您可以将它们全部排队,任务假脱机程序将一次执行它们。 同时,您可以进行其他活动。 每个系统上的每个用户都有自己的工作队列。 当您知道命令取决于大量RAM,大量磁盘使用量,大量输出或出于某种原因,最好不要同时运行它们时,它也非常有用。 简而言之,Task Spooler是一个命令行程序,旨在让其他命令加入队列以执行程序包。

在本快速教程中,我们将向您展示如何在类似Unix的操作系统上安装和使用Task Spooler。

排队Linux命令并使用Task Spooler一次执行一次

安装任务后台处理程序

在Debian,Ubuntu和Linux Mint上:

Task Spooler在Debian,Ubuntu和其他基于DEB的系统的默认存储库中可用。 因此,您可以使用以下命令进行安装:

sudo apt-get install task-spooler

对于其他系统,您可以从以下位置下载原始任务后台处理程序文件: 这个连结 并将其作为本机软件包构建在Linux上并进行安装。

应用

让我们看一些实际的例子。 此处显示的所有示例均已在Ubuntu 16.04 LTS上进行了测试。

注意:在Debian / Ubuntu上,可以使用“ tsp”命令执行Task Spooler,因为存在另一个名为ts的程序(Time Stamping Authority工具(客户端/服务器))。 对于其他Linux发行版,可以使用ts命令启动它。

运行tsp命令:

tsp

目前,队列中没有任何内容。 让我将一些命令添加到队列中。 为此,请运行以下命令:

tsp echo Добро пожаловать в AndreyEx
tsp echo "Привет, Мир"

现在再次运行tsp命令以查看排队的命令:

tsp

输出示例:

ID State Output E-Level Times(r/u/s) Command [run=0/1]
0 finished /tmp/ts-out.jpHIG1 0 0.01/0.00/0.00 echo Добро пожаловать в AndreyEx
1 finished /tmp/ts-out.8H6LLB 0 0.00/0.00/0.00 echo Привет, Мир

如您所见,在上面的输出中,每个命令都有一个升序的唯一ID(0、1、2等。)。 此外,它还显示队列中命令的状态(例如,已完成或正在运行)。 echo命令非常简单且简短,因此我们得出的结果为“完成”。 让我们运行一些需要较长时间才能完成的命令。

tsp find / -type f -printf '%T+ %pn' | sort | head -n 20

此命令将搜索并显示根文件系统(/)中的最后20个旧文件。

输出示例:

2

现在运行tsp命令以查看排队的命令列表。

tsp

输出示例:

ID State Output E-Level Times(r/u/s) Command [run=1/1]
2 running /tmp/ts-out.79rMXn find / -type f -printf %T+ %pn
0 finished /tmp/ts-out.jpHIG1 0 0.01/0.00/0.00 echo Добро пожаловать в AndreyEx
1 finished /tmp/ts-out.8H6LLB 0 0.00/0.00/0.00 echo Привет, Мир

如您在上面的输出中看到的,ID为2的命令有效。 或者,您可以添加要与Task Spooler一起运行的命令。

要查看正在运行的作业的输出以检查正在发生的情况,请输入以下命令:

tsp -c 2

这里2是命令运行的ID。 按CTRL + C返回到终端。 这不会覆盖正在运行的命令。 这只会将您带回终端。 这项工作将继续在后台进行。

要清除队列中已结束的所有命令,请运行以下命令:

tsp -C

在此,C是大写字母。 该命令将从队列中删除最后完成的命令。 这不会删除队列中所有正在运行的命令或命令。

要从队列中删除命令,请使用作业ID运行它,如下所示:

或者,您可以通过指定如下所示的ID来删除命令(运行,完成,排队)。

tsp -r 2

上面的命令将从队列中删除ID为2的命令。

请记住,您需要使用以下命令启动Debian / Ubuntu发行版以外的Task Spooler。 ts

有关更多详细信息,请参见参考:

man ts

要么

man tsp

结论

如果您懒得等待命令完成,则可以使用 任务假脱机程序… 它将一次从队列中以升序执行命令。 您可以随时使用您的ID查看任何正在运行的命令的结果。 它不会一次运行所有命令。 相反,它将一一执行命令。 后台处理程序任务可用于运行批处理作业。

这就是全部。 如果您认为本指南有所帮助,请在社交媒体上分享或写评论。

Sidebar