Bash 如何判断背景作业何时为';完成';

Bash 如何判断背景作业何时为';完成';,bash,unix,parallel-processing,background-process,Bash,Unix,Parallel Processing,Background Process,假设我运行以下命令: $ find /mnt/folder1 > file2.csv & find /mnt/folder2 > file2.csv & 有没有办法在这些工作完成时发出信号?或者我是否需要轮询类似于$jobs或$ps aux的内容,以便推断它们何时完成?建议如何处理此问题?除非您有一个健壮的实体,否则很难捕获您的命令。在您的案例中,您可以找到流程的PID,如: pgrep find 12542 它将查找当前find作业的所有进程ID。如果没有,则可

假设我运行以下命令:

$ find /mnt/folder1 > file2.csv & find /mnt/folder2 > file2.csv &

有没有办法在这些工作完成时发出信号?或者我是否需要轮询类似于
$jobs
$ps aux
的内容,以便推断它们何时完成?建议如何处理此问题?

除非您有一个健壮的实体,否则很难捕获您的命令。在您的案例中,您可以找到流程的PID,如:

pgrep find
12542

它将查找当前find作业的所有进程ID。如果没有,则可以假定作业已完成。

马克·塞切尔的评论中详细说明:

$ find /mnt/folder1 > file2.csv &
$ find /mnt/folder2 > file2.csv &
$ wait

作业完成后,它通常会打印到终端。您可以运行
wait
。。。如果这就是你的意思。@MarkSetchell你能举个例子说明如何运行吗?你只需在后台启动一系列并行作业,然后运行
等待
,直到它们全部完成,你才能得到提示。如果您想要更复杂的东西,只需说出您需要的。您可能最好运行jobs-pas而不是pgrep,以确保没有从其他父进程派生的查找子进程。