在bash中,可以使用控制运算符&让一个命令在后台运行,然后使用wait内置命令等待为了完成任务。控制运算符&参见manbash对控制运算符&的描述如下:如果命令被控制运算符&终止,则shell在子shell中在后台执行该命令。shell不等待命令执行完毕,返回状态为0。即当要执行的命令以&结尾时,该命令会在后台子shell中执行。当前shell不会等待这条命令执行完毕,可以继续执行下一条命令。即当一条命令执行时间较长时,如果不以&结束,当前shell会等待该命令执行完毕,然后再执行下一条命令。以&结束后,这条命令被放入后台子shell执行,当前shell可以继续执行下一条命令。wait内置命令viewhelpwait该命令的描述如下:wait:wait[-n][id...]等待作业完成并返回退出状态。等待每个由ID标识的进程,这可能是进程ID或作业规范,并报告其终止状态。如果未给出ID,则等待所有当前活动的子进程,返回状态为零。如果ID是作业规范,则等待该作业管道中的所有进程。如果提供了-n选项,则等待下一个作业终止并返回其退出状态。即wait命令可以等待指定PID的进程完成。如果未提供参数,则等待所有当前活动的子进程完成。当有多个可以并发执行的耗时操作,并且这些操作完成后,在进行下一步之前,可以使用wait命令等待这些操作完成。类似如下语句:command1&command2&waitcommand1&该命令使用&来指定在后台执行command1命令。如果command1命令执行时间比较长,如果不加&,则需要等待command1执行完成,再执行下一条命令。添加&后,在后台执行command1命令,就可以继续执行下一条命令了。同理,command2&也是在后台执行command2命令。即通过&在后台并发执行command1和command2命令,可以更好的利用CPU的并发能力,加快执行速度。如果等到command1执行完毕再执行command2,可能会比较慢。不提供任何参数执行wait命令后,会等待所有激活的子进程完成,后台执行的子进程也被激活。在这里它将等待command1和command2被执行。这里的command1和command2只是举例,实际测试时需要替换成可执行的命令。
