在阅读文档[1]时,出现了几次术语“jobspec”。
什么是jobspec?
[1]https://www.gnu.org/software/bash/manual/html_node/Job-Control-Builtins.html
什么是jobspec?
[1]https://www.gnu.org/software/bash/manual/html_node/Job-Control-Builtins.html
Greg的Bash指南中的作业控制部分 如下所述:
作业规范或“ jobspec ”是引用组成作业的进程的一种方式。作业规范可以是以下内容:
%n
表示作业号为n
的作业。%str
表示由以str
开头的命令启动的作业。如果有多个此类作业,则出错。%?str
表示由包含str
的命令启动的作业。如果有多个此类作业,则出错。%%
或%+
表示当前作业:最近在后台启动或从前台暂停的作业。如果未给出作业规范,则 fg 和 bg 将操作此作业。%-
表示前一个作业(当前作业之前的作业)。
wait %1
)。一个使用示例是:一个将视频转码数千个文件的脚本。该脚本在具有8个核心的计算机上运行。该脚本使用作业控制来管理8个工作进程,在旧进程完成时启动新进程。我通常会在perl中执行此类操作,但也可以在bash中执行。 - Craig EsteyhB
的脚本中执行了wait %1
命令,并且它奏效了。在转码示例中,您将循环检查“jobs”输出的更改,而不是等待[因为您想在任何待处理作业完成时启动新作业,而不是所有8个作业都完成时]。可能有更常见的方法来完成它,但这是一种有效的方式。 - Craig Esteykill -0
针对PID...但实际上,我倾向于将这种情况称为xargs -P 8
的工作,或者任何其他可以等待SIGCHLD而不需要轮询的东西。 - Charles Duffyjobs
状态变化,输出进度,完成文件/作业,启动下一个文件的工作者,然后睡眠。它可能需要暂停优先级较低的作业并开始优先级较高的作业。此外,它也可以在不同的计算机上运行等。 - Craig Estey