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,以确保没有从其他父进程派生的查找子进程。